2

我正在重构一段代码,逐行查看所有代码。

我遇到了一个事件处理程序:

private void mnuUpdate_Click(object sender, EventArgs e)

...并且,不知道哪个菜单项调用了这个(菜单项名称并不总是与其标签匹配,甚至接近),很好奇。

表单上的主菜单在其子项中没有这样的菜单项。

我右击事件处理程序,选择“Find Usages*”并被引导到这里:

this.mnuUpdate.Text = "Update";
this.mnuUpdate.Click += new System.EventHandler(this.mnuUpdate_Click);

(这是一个早于 .NET 的部分类优点的古老应用程序,所以它在同一个文件中)

在设计器中的表单上,当我从属性页面组合框中选择“mnuUpdate”时,表单上的 mainMenu 完全消失了。

我怎样才能找到这个逃亡的菜单项?窗体上没有popupMenu或contextMenu,只有mainMenu控件……???

  • 唯一的其他用法是:

    if (ResetConnectionFetchForm) mnuUpdate_Click(sender, e);

这是否可能只是一个应该转换为“常规旧”方法的幻像菜单项?

更新

正如最聪明的乔治曾经说过的那样,“好奇者和好奇者”。现在我发现这个:

public void btnCancel_Click(object sender, EventArgs e)

...虽然它是从代码中的七个位置调用的,但表单上没有 btnCancel ...这是一个“假”按钮单击事件。哦,我的兰塔!!!

因此,我将其替换为具有完全相同代码的无参数私有方法(它不使用发送方或事件参数)。

如果写这个 cockamamie glob 的水果蛋糕意大利面的猫是故意想让下一只猫(我)发疯,它工作得很好,并且会制作一个很好的 Poe 风格的故事或 Hitchcock 风格的电影。

...我明白了...死代码!!!

4

2 回答 2

1

好了,谜团解开了。mnuUpdate 被动态地(有条件地)添加到 mnuSetup(它是具有 Text 属性“Fetch”的顶级菜单项),如下所示:

if (!mnuSetup.MenuItems.Contains(mnuUpdate))
{
    mnuSetup.MenuItems.Add(mnuUpdate);
    UpdateMenuItemSelectable = true;
}

我认为从表单的“属性”页面的组合框中选择 mnuUpdate 是因为此时没有可视化表示。

选择“mnuSetup”会突出显示“Fetch”菜单项,但选择“mnuUpdate”会导致它比蟑螂从灯光下更快地逃走。

所以现在奇怪的是:为什么菜单项没有按需动态创建,而不是显式创建然后动态添加;猫剥猫皮似乎是一种奇怪的方式。

于 2013-04-12T20:31:24.990 回答
1

我建议你把它变成“常规的旧菜单”,这样别人就不会浪费时间弄清楚它了。

我 - 我会认为它是过时的代码,因为它没有 Handles 子句。

您可以使用 .Visible 和 .Enabled 来控制用户看到的内容。

于 2013-04-12T22:24:41.577 回答