簡體   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