在顶部栏菜单中创建组项目

时间:2018-12-18 12:10:08

标签: c# winforms

我需要在Winform应用程序的顶部栏菜单中选择数据库。我发现了如何在设计时放置检查状态,但是我不能在运行时取消检查状态。

enter image description here

我的任务更加复杂。我需要OriginalTest作为小组成员。如果选中第一个,则不选中第二个,反之亦然。我正计划通过CheckedChanged个事件来实现这一目标:

    private void testToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
    {
        originalToolStripMenuItem.Checked = !testToolStripMenuItem.Checked ;
    }

    private void originalToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
    {

        testToolStripMenuItem.Checked = !originalToolStripMenuItem.Checked;

    }

有没有更优雅的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

根据Rod Stephens撰写的article进行回答

如果您不打算在菜单中添加更多数据库,那么这样做就没有问题。

如果计划将X BD添加到菜单中,则可以将每个菜单元素存储在chain.Key中,并使用此列表来动态检查/取消选中元素。

例如,我设计了这种出色的形式:

enter image description here

未使用设计器设置这些项目的任何事件(正确命名为:List<ToolStripMenuItem>test1ToolStripMenuItem

在表单类中,我将菜单元素的列表存储在名为test4ToolStripMenuItem的列表中,并向click事件添加了相同的方法:

DBs

方法private List<ToolStripMenuItem> DBs; private void Form1_Load(object sender, EventArgs e) { DBs = new List<ToolStripMenuItem> { test1ToolStripMenuItem, test2ToolStripMenuItem, test3ToolStripMenuItem, test4ToolStripMenuItem }; foreach (var DB in DBs) { DB.Click += FakeRadioBehaviour; } } 将遍历MenuItem的列表,选中与列表中特定元素相对应的FakeRadioBehaviour,然后取消选中其他元素:

object sender