我需要在Winform应用程序的顶部栏菜单中选择数据库。我发现了如何在设计时放置检查状态,但是我不能在运行时取消检查状态。
我的任务更加复杂。我需要Original
和Test
作为小组成员。如果选中第一个,则不选中第二个,反之亦然。我正计划通过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;
}
有没有更优雅的方法来实现这一目标?
答案 0 :(得分:0)
根据Rod Stephens撰写的article进行回答
如果您不打算在菜单中添加更多数据库,那么这样做就没有问题。
如果计划将X BD添加到菜单中,则可以将每个菜单元素存储在chain.Key
中,并使用此列表来动态检查/取消选中元素。
例如,我设计了这种出色的形式:
我未使用设计器设置这些项目的任何事件(正确命名为: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