Невозможно получить доступ к отмеченному свойству элемента меню, созданного с помощью кода вне дизайнера

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

Последняя строка не работает, потому что она не находит проверенное свойство, хотя есть много доступных свойств. Любая идея, как я могу получить в этом свойстве?

1 ответ

Решение

Вы должны разыграть это как 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;
Другие вопросы по тегам