首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查是否从ParentWindow为UserControl声明了EventSetter

检查是否从ParentWindow为UserControl声明了EventSetter
EN

Stack Overflow用户
提问于 2015-01-08 14:54:01
回答 1查看 80关注 0票数 1

我正在为我的项目制作一个ToolBar菜单UserControl。根据ToolBar所经历的每种情况,它将有n个按钮。例如,在某些窗口中,工具栏将具有新建、编辑、删除按钮,但在其他窗口中,它可能具有上载、下载和打印。这是一个简单的例子,它变得更复杂。

这是我到目前为止所拥有的:在UserControl (ToolBar)中

代码语言:javascript
复制
NEW Button
    Public Event btnNew_Click As btnNew_ClickedEventHandler
    Public Delegate Sub btnNew_ClickedEventHandler(sender As Object)
    Private Sub btnNew_MouseUp(sender As Object, e As MouseButtonEventArgs)
        RaiseEvent btnNew_Click(Me)
    End Sub

此代码将使此事件在xaml窗口中可见

代码语言:javascript
复制
<toolbar btnNew_Click="Code_for_New_Record"/>

到目前为止一切正常(一切正常)。但我想检查我的事件是否从MainWindow附加,如果不是,则将其隐藏。

因此,例如,如果我有用于更新、删除、打印等的按钮,而MainWindow的程序员只编写了新按钮,那么应该只显示新按钮。

问:我如何判断事件是附加的还是被调用的?我想有一些代码,说

如果附加了myEvent IsNot,则button.visibility =折叠end IF

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2015-01-08 18:45:49

要检查包含toolbar控件的窗口是否已注册到btnNew_Click事件(即是否附加了事件处理程序),只需检查是否存在null

代码语言:javascript
复制
if (btnNew_Click == null)
    // event not attached
else
    // event attached

请注意,这是C#代码,在VB中,这看起来类似于下面(现在不能测试它):

代码语言:javascript
复制
If btnNew_Click Is Nothing Then
    ' Event not attached
Else
    ' event attached
End If

问题是什么时候调用这个代码。如果要完全隐藏相应的工具栏按钮,可能需要在UserControl的OnLoaded事件中执行null-check,并将按钮的Visibility设置为VisibleCollapsed。但是,您可以随时执行此操作,即使应用程序已经在运行(我曾经实现过一个类似的场景,即在按钮的MouseOver事件中执行null-check,并在未附加事件的情况下更改鼠标光标(以表示无法单击按钮)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27834533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档