我在C ++ / CLI中开发了一个Winforms应用程序。我在我的MDI Parent表单中添加了一个MenuStrip对象。在MenuStrip中是一个ToolStripMenuItem对象,每次创建一个新的MDI子窗体时,它的DropDownItems集合都会添加一个ToolStripMenuItem对象。我希望每次单击时将ToolStripMenuItem的Checked属性设置为true(并将其设置为false,以用于所有其他ToolStripMenuItem实例)。但是显示复选标记似乎有问题:
在图片中,应该检查第四项,但不是显示复选标记,我看到的只是一个蓝色矩形。
这是MDI Parent表单中的函数,它创建一个新的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添加到hydro_menustrip实例的ToolStripMenuItem(声明为m_windowsToolStripMenuItem):
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;
}
这是添加到m_windowsToolStripMenuItem对象的DropDownItemClicked事件:
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;
}