繁体   English   中英

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

[英]Can't access checked property of menu item created with code outside the designer

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;
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM