2

我制作了一个通过MouseDown事件激活的上下文菜单。此事件检查用户是否单击了右键,如果是,则打开菜单。我正在使用相同的事件为列表框和列表视图打开相同的上下文菜单。有没有办法检查其中哪一个激活了 MouseDown 事件?

编辑:我会更具体一点。我可以从事件本身判断哪个控制器激活了事件。我想知道哪个控制器从已单击的上下文菜单项中激活了事件。

4

2 回答 2

2

如果你有这样的事情:

private void MouseDown(object sender, MouseButtonEventArgs e)
{

}

你可以检查sender

if(sender is ListView)
{
    //event fired by ListView
} 

if(sender is ListBox)
{
    //event fired by ListBox
} 

等等

于 2013-05-25T14:55:35.350 回答
0

我通过使用上下文菜单的 Tag 属性解决了这个问题。我把触发事件的发送者对象放在那里,然后我可以这样做:

ListView lv = resultsContextMenu.Tag as ListView;
if (lv == null) //listbox was the one to call the mouse down event
{ //do stuff }

此代码是在用户选择的菜单项本身内调用的

于 2013-05-25T18:06:35.833 回答