为什么委托函数多次执行?

shuizhuyupian 2010-08-20 12:08:52
如题

定义了
private ContextMenuStrip m_menuEdit = new ContextMenuStrip();

//弹出操作菜单
m_menuEdit.Show(MousePosition.X, MousePosition.Y);
m_menuEdit.ItemClicked += new ToolStripItemClickedEventHandler(m_menuEdit_ItemClick);

private void m_menuEdit_ItemClick(object sender, ToolStripItemClickedEventArgs e)
{
if (((ContextMenuStrip)sender).Items[0] == e.ClickedItem)
{
m_DataGridViewPoint.Rows.Remove(m_DataGridViewPoint.CurrentRow);
}
}

奇怪的是,为什么我点击右键弹出菜单的相关选项,m_menuEdit_ItemClick为执行好几次呢?导致m_DataGridViewPoint删除了好几行,大家帮帮忙解释下,怎么解决啊?
...全文
96 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuizhuyupian 2010-08-20
  • 打赏
  • 举报
回复
谢谢大家,4 5 6楼正解
cc_net 2010-08-20
  • 打赏
  • 举报
回复
弹出一次你就绑定了一次事件,按道理应该是第N次弹出,就执行N次
happyer_longlong 2010-08-20
  • 打赏
  • 举报
回复
m_menuEdit.ItemClicked += new ToolStripItemClickedEventHandler(m_menuEdit_ItemClick)
弹出一次 你增加一次 当然多次可
jointan 2010-08-20
  • 打赏
  • 举报
回复
你应该把:m_menuEdit.ItemClicked += new ToolStripItemClickedEventHandler(m_menuEdit_ItemClick);
放到窗体构造函数的最后
        public Form1()
{
InitializeComponent();
m_menuEdit.ItemClicked += new ToolStripItemClickedEventHandler(m_menuEdit_ItemClick);

}


m_menuEdit.Show后,不需要在重新执行m_menuEdit.ItemClicked +=...
shuizhuyupian 2010-08-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 healer_kx 的回复:]
那是多少次呢?你在看看你有多少个Item了。
[/Quote]

目前只有一个item,而且我已经作出了判断if (((ContextMenuStrip)sender).Items[0] == e.ClickedItem)
Peter200694013 2010-08-20
  • 打赏
  • 举报
回复
断点调试下...
healer_kx 2010-08-20
  • 打赏
  • 举报
回复
那是多少次呢?你在看看你有多少个Item了。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧