C# 自訂樣式實現菜單和工具列的分割線!!

來源:互聯網
上載者:User

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

                

大功告成!呵呵!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.