我在Windows Forms
中有一个旧项目,它有300多个菜单,在MDI窗体中有菜单单击事件。有没有办法获得字符串形式的单击事件名称(例如“toolStripMenuItem_Click”)?我试过这样做,
foreach (ToolStripMenuItem menu in menuStrip.Items)
{
foreach (ToolStripDropDownItem submenu in menu.DropDownItems)
{
var _events= submenu.GetType()
.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance)
.OrderBy(pi => pi.Name).ToList();
}
}
但它总是返回空值。正确的方法是什么?
1条答案
按热度按时间3zwjbxry1#
在运行时检索事件处理程序并不容易,尤其是在Forms框架中,其中某些事件在后台进行特殊处理。
一种更简单的方法(如果在运行时不需要名称,而是在设计时需要)是在
MyForm.designer.cs
文件上使用正则表达式来提取单击处理程序的名称。请参见此示例来源: