在做WinForm介面布局時,菜單和工具列必不可少!但是MenuStrip和ToolStrip不能夠對邊框的樣式直接設定,如果想實現菜單和工具列之間的分割線就不容易實現;今天查閱了一下msdn找到了一個方法,和大家一塊分享,如果有更好的辦法的話可以貼出來,共同進步;
首先,建立一個CustomProfessionalRenderer類(類名可隨便定義)繼承自ToolStripProfessionalRenderer。代碼如下:
/// <summary>
/// 自訂菜單工具列樣式
/// </summary>
class CustomProfessionalRenderer : ToolStripProfessionalRenderer
{
//重載ToolStripProfessionalRenderer類的OnRenderToolStripBorder方法
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
base.OnRenderToolStripBorder(e);
ControlPaint.DrawBorder(
e.Graphics,
e.AffectedBounds,
SystemColors.ControlDarkDark, 0, ButtonBorderStyle.None, SystemColors.Control, 1, ButtonBorderStyle.Inset, SystemColors.ControlDarkDark, 0, ButtonBorderStyle.None, SystemColors.ControlDark, 0, ButtonBorderStyle.None);
}
}
然後,通過設定MenuStrip或ToolStrip的Renderer屬性就ok了。代碼如下:
private void Form1_Load(object sender, EventArgs e)
{
this.toolStrip1.Renderer = new CustomProfessionalRenderer(); //設定自訂樣式
}
最後,需要注意的是如果設定MenuStrip的邊框的話,效果不是很好,因為子功能表的邊框和控制項的主邊框都會使用該樣式繪製;這樣會造成重複,因此建議設定ToolStrip的樣式!效果如下:
大功告成!呵呵!