[C#]撰寫一個UserControl,能限制其大小
原本希望能在Form裡頭放一條分隔線,畫面才會好看:
但找了Visual Studio的ToolBox,都找不到這樣的一個控制項(Control),一開始只能用PictureBox來實現…
但用PictureBox卻不夠嚴謹,當橫線的Height要拉大的時候,整條線變得奇醜無比。因此上網找了一些方法,將實作過程分享給大家。
1. 首先,建立一個使用者控制項(UserControl)
2. 將這個UserControl設計好
3. 加入參考:System.Design
4. 在這個UserControl的程式碼加上一個Class(記得using System.Windows.Forms.Design;):
internal class HLineDesigner : ControlDesigner
{
public override SelectionRules SelectionRules
{
get
{
return SelectionRules.LeftSizeable | SelectionRules.RightSizeable | SelectionRules.Moveable;
}
}
}
5. 將UserControl的Class改為:
[Designer(typeof(HLineDesigner))]
[ToolboxBitmap(@"hline.png")]
public partial class HorizontalLine : UserControl
{
//------------------------------------------------------------------------------
/// <summary>
/// 建構子
/// </summary>
public HorizontalLine()
{
InitializeComponent();
}
//------------------------------------------------------------------------------
/// <summary>
/// 強迫高度
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="specified"></param>
protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)
{
base.SetBoundsCore(x, y, width, 2, specified);
}
}
6. hline.png是出現在ToolBox的小圖,記得把這個檔案放在Debug目錄下
7. 編譯後就能看到這個新控制項了
其中的HorizontalLine及VerticalLine就是我自己建立的控制項,橫線只能左右伸展,豎線只能上下伸展。