我正在为我的项目制作ToolBar菜单UserControl。 ToolBar将根据它所经历的每种情况拥有n个按钮。因此,例如在某些窗口工具栏中将有新的,编辑,删除按钮,但在其他窗口工具栏中可能有上传,下载和打印。这是一个简单的例子,它比这更复杂。
这是我到目前为止所拥有的: 在UserControl(ToolBar)中
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中的Window显示此事件
<toolbar btnNew_Click="Code_for_New_Record"/>
到目前为止一切顺利(一切正常)。但我想检查我的事件是否从MainWindow附加,如果不是,则隐藏它。
例如,如果我有更新,删除,打印等按钮。而MainWindow的程序员只编写了New Button,只显示了新的Button。
问题: 如何判断事件是附加还是被调用?我想要一些代码
如果myEvent IsNot附加,那么 button.visibility =折叠 结束如果
提前感谢您的所有帮助!
答案 0 :(得分:0)
要检查包含工具栏控件的窗口是否已注册到btnNew_Click
事件(意味着是否附加了事件处理程序),您只需检查null
:
if (btnNew_Click == null)
// event not attached
else
// event attached
请注意,这是C#代码,在VB中,它看起来类似于以下内容(现在无法测试):
If btnNew_Click Is Nothing Then
' Event not attached
Else
' event attached
End If
问题是何时调用该代码。如果要完全隐藏相应的工具栏按钮,可能需要执行null
- 在UserControl的OnLoaded
事件中进行检查,并将按钮的Visibility
设置为Visible
或Collapsed
。但是,您可以随时执行此操作,即使应用程序已在运行(我在执行null
时实现了类似的方案 - 在按钮的MouseOver
事件中检查并更改了鼠标光标(到如果没有附加事件,则表示无法点击该按钮。