如何动态地将现有的ToolStrip按钮添加到ToolStrip

时间:2013-06-20 17:51:18

标签: winforms

我有一个Winform应用程序使用MDI表单。在MDI表单上,我有一个ToolStrip,上面有按钮(按钮有图像),作为应用程序的主菜单按钮。因此,当用户单击工具条上的按钮时,该按钮的mdichild表单将打开子表单。

所以我有六个按钮,图像已经创建并在项目中。但我希望用户选择他们想要在工具条上显示的按钮。 因此,用户打开应用程序,工具条上只有一个按钮。用户单击该按钮并打开子屏幕,显示可能位于工具条上的所有可用现有按钮。用户选择他们想要在工具条上显示的按钮,然后单击子屏幕上的保存按钮。

我想要的是,只要用户点击该保存按钮,用户选择的按钮就会自动显示在工具条上。 现在我必须让用户关闭应用程序,然后重新打开它们选择出现在工具条上的按钮。

如何让按钮自动显示?

2 个答案:

答案 0 :(得分:1)

只需创建所有ToolStripButtons,然后将每个Visible属性设置为false。当用户选择要显示它们时,请将Visible的{​​{1}}属性更改为ToolStripButton。它们会自动显示在true

我使用VS2010和RemObjects的Oxygene(以前的AKA ToolStrip)进行了测试。

  • 启动新的WinForms应用程序
  • 在窗口上放置Delphi Prism。右键单击它并选择ToolStrip
  • 双击Insert standard items按钮(New,左端的按钮),然后将以下代码添加到newToolStripButton处理程序中:
// Oxygene version: helpToolStripButton.Visible := not helpToolStripButton.Visible;
helpToolStripButton.Visible != helpToolStripButton.Visible;
  • 运行该应用程序,然后重复点击newToolStripButton_Click,并观看最右侧的newTooStripButtonToolStripButton按钮),并从Help中消失。

答案 1 :(得分:0)

您可以创建任何 ToolStrip 并将其添加到 MenuStrip.DropDownItems.Add。 click EventHandler 必须是 (s,e) 函数。

ToolStripMenuItem ts = new ToolStripMenuItem();
ts.Name = $"MyMenuStrip";
ts.Text = "New MenuStrip";
ts.Click += new EventHandler(this.ToolStripMenuItem_Click);

private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
    ToolStripMenuItem clickedMenuItem = sender as ToolStripMenuItem;
    Trace.WriteLine($"Clicked: {clickedMenuItem.Text}");
}