我正在为我的项目制作一个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窗口中可见
<toolbar btnNew_Click="Code_for_New_Record"/>到目前为止一切正常(一切正常)。但我想检查我的事件是否从MainWindow附加,如果不是,则将其隐藏。
因此,例如,如果我有用于更新、删除、打印等的按钮,而MainWindow的程序员只编写了新按钮,那么应该只显示新按钮。
问:我如何判断事件是附加的还是被调用的?我想有一些代码,说
如果附加了myEvent IsNot,则button.visibility =折叠end IF
提前感谢您的帮助!
发布于 2015-01-08 18:45:49
要检查包含toolbar控件的窗口是否已注册到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问题是什么时候调用这个代码。如果要完全隐藏相应的工具栏按钮,可能需要在UserControl的OnLoaded事件中执行null-check,并将按钮的Visibility设置为Visible或Collapsed。但是,您可以随时执行此操作,即使应用程序已经在运行(我曾经实现过一个类似的场景,即在按钮的MouseOver事件中执行null-check,并在未附加事件的情况下更改鼠标光标(以表示无法单击按钮)。
https://stackoverflow.com/questions/27834533
复制相似问题