我制作了一个通过MouseDown
事件激活的上下文菜单。此事件检查用户是否单击了右键,如果是,则打开菜单。我正在使用相同的事件为列表框和列表视图打开相同的上下文菜单。有没有办法检查其中哪一个激活了 MouseDown 事件?
编辑:我会更具体一点。我可以从事件本身判断哪个控制器激活了事件。我想知道哪个控制器从已单击的上下文菜单项中激活了事件。
我制作了一个通过MouseDown
事件激活的上下文菜单。此事件检查用户是否单击了右键,如果是,则打开菜单。我正在使用相同的事件为列表框和列表视图打开相同的上下文菜单。有没有办法检查其中哪一个激活了 MouseDown 事件?
编辑:我会更具体一点。我可以从事件本身判断哪个控制器激活了事件。我想知道哪个控制器从已单击的上下文菜单项中激活了事件。
如果你有这样的事情:
private void MouseDown(object sender, MouseButtonEventArgs e)
{
}
你可以检查sender
:
if(sender is ListView)
{
//event fired by ListView
}
if(sender is ListBox)
{
//event fired by ListBox
}
等等
我通过使用上下文菜单的 Tag 属性解决了这个问题。我把触发事件的发送者对象放在那里,然后我可以这样做:
ListView lv = resultsContextMenu.Tag as ListView;
if (lv == null) //listbox was the one to call the mouse down event
{ //do stuff }
此代码是在用户选择的菜单项本身内调用的