1. 显示文字标签/无文字标签
类似于IE上面的工具栏,比如下图,后退就是带文字标签的,主页就是不带文字标签的。
2. 使用大图标/小图标
我在追加的菜单事件中写控制ToolStrip的ImageScalingSize属性的代码:
private void tsmiLargeIcon_Click(object sender, EventArgs e)
{
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(32, 32);
}
运行后根本不起作用,无意中发现,如果按下【Alt】键就会起作用。于是想在代码中添加
SendKeys.Send("%");
但这不是解决问题的根本办法,而且上面这一句模拟【Alt】键按下代码还得写两遍,因为如果只写一遍的话,菜单的第一项就被选中了,这当然是行的。如果这样能解决问题也可以,但是我发现,当先不显示文字标签,然后再变大小,即便写上【SendKeys.Send(“%”);】也不管用了,还得想其他办法。
后来在事件中添加改变ToolStripButton大小的代码也不起作用,后来发现,ToolStripButton的【AutoSize】属性默认是【true】的,于是修改菜单的单击事件如下:
/// <summary>
/// 大图标单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tsmiLargeIcon_Click(object sender, EventArgs e)
{
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(32, 32);
this.toolStrip1.Height = 32;
foreach (ToolStripItem tsmi in this.toolStrip1.Items)
{
if (tsmi is ToolStripButton)
{
tsmi.AutoSize = false;
tsmi.Height = 32;
tsmi.Width = 32;
tsmi.AutoSize = true;
}
}
}
/// <summary>
/// 小图标单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tsmiSmallIcon_Click(object sender, EventArgs e)
{
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(16, 16);
this.toolStrip1.Height = 23;
foreach (ToolStripItem tsmi in this.toolStrip1.Items)
{
if (tsmi is ToolStripButton)
{
tsmi.AutoSize = false;
tsmi.Height = 16;
tsmi.Width = 16;
tsmi.AutoSize = true;
}
}
}
运行之后成功了,之所以在改变工具按钮前将【AutoSize】设为【false】,是因为只有设置此项,才能改变ToolStripButton的大小。最后又将【AutoSize】设为【true】是因为,如果不设为【true】文字标签将无法正常显示,大图标时文字标签将因为显示区域的问题而看不到。
效果如下: