2
我想重寫System.Windows.Forms.UserControl來繪製自定義邊框(例如使用自定義顏色)。使用內置類是不可能的,因爲可以影響邊界行爲的唯一方法/屬性是BorderStyle。如何重寫UserControl類來繪製自定義邊框?
重寫OnPaint以下方法(下面的代碼)不是一個好的解決方案,因爲它基本上是在原始頂部繪製另一個邊框。
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (this.BorderStyle == BorderStyle.FixedSingle)
ControlPaint.DrawBorder(e.Graphics, this.ClientRectangle, Color.LightGray, ButtonBorderStyle.Solid);
}
有誰知道如何覆蓋自定義控件中的邊框繪圖?
由於某些原因,將此用戶控件放到面板中並不適用於我的情況。
謝謝你,我想出了類似的解決方案。但是不使用BorderStyle類型作爲屬性,而只使用布爾值(不管是否繪製)。 但是,這並不能解決原始問題:如何不重繪邊框,而是覆蓋內置功能來繪製我需要的邊框。 – 2010-10-11 18:11:27
但要小心。如果您的控件被分配給UserControl變量並且邊框屬性發生更改,這可能會導致潛在的意外行爲。即:'UserControl x = new MyControl(); x.BorderStyle = BorderStyle.Fixed3D;'這會設置'base.Borderstyle',而不是你的'new' BorderStyle屬性。 – ricovox 2013-11-27 05:00:17