[英]changing the text box border style in windows form - c#
我有一個文本框,現在是正方形我想將該正方形轉換為橢圓形我正在使用 win forms 應用程序
任何人都可以告訴任何關於這個的想法
您可以使用SetWindowRgn
API Function 更改 window 的形狀。 這個 function - 正如您在此處看到的 - 獲得三個 arguments:
Handle
屬性獲取它。 您可以使用OnHandleCreated
方法中的此函數從TextBox
子類化並創建一個橢圓形的 TextBox。 class 可以是這樣的:
class OvalTextBox : TextBox
{
[DllImport("user32.dll")]
static extern int SetWindowRgn(IntPtr hWnd, IntPtr hRgn, bool bRedraw);
[DllImport("gdi32.dll")]
static extern IntPtr CreateRoundRectRgn(int x1, int y1, int x2, int y2, int cx, int cy);
public OvalTextBox()
{
base.BorderStyle = System.Windows.Forms.BorderStyle.None;
}
protected override void OnHandleCreated(EventArgs e)
{
base.OnHandleCreated(e);
SetWindowRgn(this.Handle, CreateRoundRectRgn(0, 0, this.Width, this.Height, 20, 20), true);
}
}
創建由文本框繼承的 class,覆蓋 OnPaint。 在 winforms 中使用您的自定義文本框。
使用OvalShape控件並在其中放置一個文本框。 文本框應該有一個不可見的。
或者,創建一個自定義控件並覆蓋 OnPaint,以便它使用graphics.DrawElipse繪制橢圓。
如果您使用 Windows Forms 執行此操作,則唯一的方法是創建一個新的用戶控件並從 TextBox 繼承您的控件。 然后你必須重寫 OnPaint 方法並實現你自己的繪圖代碼。
如果您可以使用 WPF ,那么它會容易得多。 如果您可以使您的應用程序成為 WPF 應用程序,那么您需要做的就是將一個文本框放到您的表單上,然后為該形狀放入一個自定義模板。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.