【发布时间】:2014-02-28 07:07:24
【问题描述】:
我在为我的 ContextMenu 找到正确的 Eventhandler 时遇到问题。请注意,这不是ContextMenuStrip。我已将ContextMenu 声明如下:
public void button_MouseRightButtonDown(object sender, MouseButtonEventArgs e)//add a context menu to buttons
{
Button button = sender as Button;
menu = new ContextMenu();
menu.Items.Add(new MenuItem() { Header = "Delete" });
button.ContextMenu = menu;
menu.Closed += button_DeleteButtonClicked;//find the right event
}
例子:
http://puu.sh/6Jymf.jpg http://puu.sh/6Jymf.jpg
然后,处理程序(现在是错误的, .Closed 在菜单关闭时触发事件):
private void button_DeleteButtonClicked(object sender, RoutedEventArgs e)//delete bookmark
{
Button button = ((ContextMenu)sender).PlacementTarget as Button;
string line_to_delete = button.ToString().Replace("System.Windows.Controls.Button: ", "");
string[] lines = File.ReadAllLines(@"bookmarks.txt");
File.WriteAllText(@"bookmarks.txt", String.Empty);
for (int i = 0; i < lines.Length; i++)
{
if (lines[i] != line_to_delete)
{
using (StreamWriter wr = File.AppendText(@"bookmarks.txt"))
{
wr.WriteLine(lines[i]);
}
}
}
}
所以基本上我正在寻找一个在按下“删除”时触发事件的处理程序,而不是在 ContextMenu 关闭时触发事件。我的猜测是我对第一段代码的声明是错误的,但我似乎无法弄清楚。
【问题讨论】:
-
"when "Closed" is pressed"是指按下Delete的时候吗? -
是的,现在已编辑。
-
您可以参考下面的链接,它可以回答您的问题stackoverflow.com/questions/5197226/…
-
您可以参考下面的链接,它可以回答您的问题stackoverflow.com/questions/5197226/…
标签: c# wpf button browser bookmarks