在做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的樣式!效果如下: