C++/CLI Winforms ToolStripMenuItem Проверенное свойство
Я разрабатываю приложение Winforms в C++/CLI. Я добавил объект MenuStrip в мою родительскую форму MDI. В MenuStrip находится объект ToolStripMenuItem, а в его коллекцию DropDownItems добавляется объект ToolStripMenuItem каждый раз, когда создается новая дочерняя форма MDI. Я хочу установить для свойства Checked объекта ToolStripMenuItem значение true при каждом нажатии (и установить его в значение false для всех остальных экземпляров ToolStripMenuItem). Но, похоже, возникает проблема с отображением галочки:
На рисунке должен быть проверен четвертый элемент, но вместо отображения галочки все, что я вижу, это синий прямоугольник.
Вот функция в родительской форме MDI, которая создает новый объект canvas (производный от класса System::Windows::Forms::Form):
void AddAndShowCanvas(ProjectID type, unsigned int index, System::String^ name, bool demo, bool data) {
m_Canvases->push_back(gcnew canvas(m_MainController, this, type, index, name, demo, data));
m_Canvases->back()->MdiParent = this;
m_menuStrip->AddCanvasToWindowsToolStrip(m_Canvases->back());
if (data)
m_Canvases->back()->GetMainPanel()->DisplayLoadedFile();
m_Canvases->back()->Show();
}
Вот функция в классе hydro_menustrip (производная от класса System::Windows::Forms::MenuStrip), которая добавляет ToolStripMenuItem к ToolStripMenuItem (объявлен как m_windowsToolStripMenuItem) экземпляра hydro_menustrip:
void hydro_menustrip::AddCanvasToWindowsToolStrip(canvas^ canvas) {
System::Windows::Forms::ToolStripMenuItem^ canvasItem =
gcnew System::Windows::Forms::ToolStripMenuItem(canvas->GetProjectTitle());
m_windowsToolStripMenuItem->DropDownItems->Add(canvasItem);
m_windowsToolStripMenuItem->DropDownItems[m_windowsToolStripMenuItem->DropDownItems->Count - 1]->PerformClick();
canvasItem->Click += canvas->OpenCanvasEvent;
}
А вот событие DropDownItemClicked, добавленное в объект m_windowsToolStripMenuItem:
void hydro_menustrip::windows_DropDownItemClicked(System::Object^ sender, ToolStripItemClickedEventArgs^ e) {
for each(ToolStripMenuItem^ item in m_windowsToolStripMenuItem->DropDownItems)
item->Checked = false;
safe_cast<ToolStripMenuItem^>(e->ClickedItem)->Checked = true;
}