ToolStrip 工具栏控件

ToolStrip 是工具栏控件,通常显示在菜单栏(MenuStrip)的下方,用于放置常用操作的快捷按钮。

可添加的子项类型

子项类型说明
ToolStripButton标准按钮,最常用
ToolStripLabel文本标签,不可点击
ToolStripSplitButton分体按钮,左侧点击 + 右侧下拉
ToolStripDropDownButton下拉按钮
ToolStripSeparator分隔线
ToolStripComboBox下拉组合框
ToolStripTextBox文本框
ToolStripProgressBar进度条

添加按钮和事件

拖拽 ToolStrip 到窗体后,点击下拉箭头选择要添加的子项。为按钮设置 Image 和 Text 后,双击按钮自动生成点击事件:

private void toolStripButton1_Click(object sender, EventArgs e)
{
    MessageBox.Show("你好吗");
}Code language: JavaScript (javascript)

设置按钮显示样式

按钮可以同时显示图片和文本,通过 DisplayStyle 和 TextImageRelation 控制:

this.toolStripButton1.Text = "保存";
this.toolStripButton1.Image = Properties.Resources.save;
this.toolStripButton1.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText; // 图片+文字
this.toolStripButton1.TextImageRelation = TextImageRelation.ImageBeforeText; // 图片在文字左侧
this.toolStripButton1.ImageAlign = ContentAlignment.MiddleLeft;
this.toolStripButton1.TextAlign = ContentAlignment.MiddleRight;Code language: JavaScript (javascript)
DisplayStyle说明
Image仅显示图片
Text仅显示文字
ImageAndText图片+文字
None都不显示

常用属性

属性说明
Items工具栏上的子项集合
Dock停靠位置(默认 Top)
GripStyle是否显示左侧移动手柄
LayoutStyle布局方式(StackWithOverflow、HorizontalStackWithOverflow、VerticalStackWithOverflow、Table)
ShowItemToolTips是否显示工具提示
Stretch是否拉伸填满宽度
RenderMode渲染模式(System、Professional、ManagerRenderMode)
AutoSize是否自动调整大小
this.toolStrip1.Dock = DockStyle.Top;
this.toolStrip1.Stretch = true;
this.toolStrip1.ShowItemToolTips = true;
this.toolStrip1.GripStyle = ToolStripGripStyle.Hidden; // 隐藏移动手柄Code language: JavaScript (javascript)

后台动态添加按钮

ToolStripButton btn = new ToolStripButton();
btn.Text = "新建";
btn.Image = Properties.Resources.newfile;
btn.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;
btn.Click += (s, e) => { MessageBox.Show("新建文件"); };
this.toolStrip1.Items.Add(btn);

// 添加分隔线
this.toolStrip1.Items.Add(new ToolStripSeparator());Code language: JavaScript (javascript)

设置按钮状态

this.toolStripButton1.Enabled = false;   // 禁用
this.toolStripButton1.Visible = false;   // 隐藏
this.toolStripButton1.Checked = true;    // 勾选状态(配合 CheckOnClick)
this.toolStripButton1.CheckOnClick = true; // 点击切换勾选状态Code language: JavaScript (javascript)

常用事件

事件说明
ItemClicked任意子项被点击时触发
Click单个按钮的点击事件
ButtonClick按钮点击
// 通过 ItemClicked 统一处理(配合 Tag 标识)
private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    switch (e.ClickedItem.Tag?.ToString())
    {
        case "New":
            MessageBox.Show("新建");
            break;
        case "Open":
            MessageBox.Show("打开");
            break;
    }
}Code language: JavaScript (javascript)

与 StatusStrip / MenuStrip 的关系

控件位置用途
MenuStrip顶部最上方菜单栏
ToolStrip菜单栏下方工具栏/快捷按钮
StatusStrip底部状态栏

三者通常配合使用,构成标准的桌面应用程序界面布局。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注