C ++ / CLI Winforms ToolStripMenuItem Checked属性

时间:2015-08-19 13:13:45

标签: winforms c++-cli toolstripitem

我在C ++ / CLI中开发了一个Winforms应用程序。我在我的MDI Parent表单中添加了一个MenuStrip对象。在MenuStrip中是一个ToolStripMenuItem对象,每次创建一个新的MDI子窗体时,它的DropDownItems集合都会添加一个ToolStripMenuItem对象。我希望每次单击时将ToolStripMenuItem的Checked属性设置为true(并将其设置为false,以用于所有其他ToolStripMenuItem实例)。但是显示复选标记似乎有问题:

Check mark does not display, instead a blue rectangle is displayed

在图片中,应该检查第四项,但不是显示复选标记,我看到的只是一个蓝色矩形。

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

0 个答案:

没有答案