【发布时间】:2012-03-25 07:43:47
【问题描述】:
我有一个菜单项,我要向其中添加另一个项。现在我想将点击事件分配给新添加的项目。我怎么能这样做?下面是我添加菜单项的方法。
MI.Items.Add(System.IO.Path.GetFullPath(ofd.FileName));
【问题讨论】:
我有一个菜单项,我要向其中添加另一个项。现在我想将点击事件分配给新添加的项目。我怎么能这样做?下面是我添加菜单项的方法。
MI.Items.Add(System.IO.Path.GetFullPath(ofd.FileName));
【问题讨论】:
只需创建MenuItem 类的新实例并订阅Click 事件:
MenuItem newMenuItem = new MenuItem();
newMenuItem.Header = System.IO.Path.GetFullPath(ofd.FileName);
newMenuItem.Click += MenuItemOnClick; // The handler.
MI.Items.Add(newMenuItem);
【讨论】:
通过索引获取MenuItem 并使用+= 语法附加事件处理程序:
int itemIndex = MI.Items.Add(System.IO.Path.GetFullPath(ofd.FileName));
MenuItem item = MI.Items[itemIndex] as MenuItem;
item.Click += new RoutedEventHandler(Item_Click);
【讨论】:
Add 返回一个整数,表示添加的项目的索引,然后您可以使用此索引访问集合的元素并订阅事件,因此您必须执行以下操作:
var index = MI.Items.Add(System.IO.Path.GetFullPath(ofd.FileName));
((UIElement)MI.Items.GetItemAt(index)).MouseLeftButtonUp += OnMenuItemMouseUp;
void OnMenuItemMouseUp (object sender, MouseButtonEventArgs e) {
}
【讨论】: