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

本文关键字:代码 创建 菜单项 属性 checked 外部 访问 | 更新日期: 2023-09-27 18:32:12

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 属性

您需要将其转换为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;