製作自己的分隔線控制項(LineH、LineV)

來源:互聯網
上載者:User
控制項 以前用Delphi開發軟體的時候,如果需要在介面上放置一個分隔線,其內建的TBevel可以很好地滿足這一要求。現在轉到了.NET平台,竟找不到對應的控制項(畢竟每次在Paint事件中畫太麻煩)。而如果用Panel、GroupBox、Label來間接實現,效果不夠理想,並且感覺怪怪的。因此決定自己實現一個分隔線控制項,效果如下圖所示:








  在這裡我只將核心代碼貼出來,關於建立自訂控制項的相關知識可參考MSDN:

ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbcon/html/vbconControlCreation.htm



/// <summary>

/// 水平分隔線

/// </summary>

[

ToolboxBitmap(typeof(LineH), "res.LineH.ico"),

Designer(typeof(LineHDesigner))

]

public class LineH : System.Windows.Forms.UserControl

{
//... ...



private void LineH_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{

Graphics g = e.Graphics;

Rectangle r = this.ClientRectangle;



Pen darkPen = new Pen(SystemColors.ControlDark, 1);

Pen LightPen = new Pen(Color.White);



//用暗色調處理上邊緣

g.DrawLine(darkPen, r.Left, r.Top, r.Right, r.Top);



//用亮色調處理下邊緣

g.DrawLine(LightPen, r.Left, r.Top + 1, r.Right, r.Top + 1);

}


//... ...

}




/// <summary>

/// 垂直分隔線

/// </summary>

[

ToolboxBitmap(typeof(LineV), "res.LineV.ico"),

Designer(typeof(LineVDesigner))

]

public class LineV : System.Windows.Forms.UserControl

{
//... ...



private void LineV_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

{

Graphics g = e.Graphics;

Rectangle r = this.ClientRectangle;



Pen darkPen = new Pen(SystemColors.ControlDark, 1);

Pen lightPen = new Pen(Color.White);



//用暗色調處理左邊緣

g.DrawLine(darkPen, r.Left, r.Top, r.Left, r.Bottom);



//用亮色調處理右邊緣
g.DrawLine(lightPen, r.Left + 1, r.Top, r.Left + 1, r.Bottom);

}

//... ...

}





欲完全實現上圖所示效果,可參閱http://blog.csdn.net/doubon/archive/2005/01/18/258314.aspx。





相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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