无法访问使用设计器外部代码创建的菜单项的checked属性

时间:2014-11-26 19:12:05

标签: c# .net winforms toolstripitem

private void Form_Shown(object sender, EventArgs e)
{
    // Load Settings
    this.tsmiDuplexEnabled.Checked = Properties.Settings.Default.DuplexEnabled;
    this.tsmiRemoveBlanks.Checked = Properties.Settings.Default.AutoDiscardBlanks;

    this.tsmiColorMode.DropDownItems[Properties.Settings.Default.ColorMode].Checked = true;
}

最后一行不起作用,因为它找不到checked属性,尽管有许多可用属性。知道如何获得该物业吗?

1 个答案:

答案 0 :(得分:3)

您需要将其转换为ToolStripMenuItem以获取Checked属性。请注意,分隔符不是ToolStripMenuItem,因此您不能盲目地将每个DropDownItem强制转换为ToolStripMenuItem

例如:

foreach (ToolStripItem tsi in item.DropDownItems)
{
    if (tsi is ToolStripMenuItem)
        ((ToolStripMenuItem)tsi).Checked = true;
}

在你的情况下看起来你不会意外得到一个分隔符,所以这应该工作:

((ToolStripMenuItem)this.tsmiColorMode.DropDownItems[Properties.Settings.Default.ColorMode]).Checked = true;