簡體   English   中英

更改 windows 表單中的文本框邊框樣式 - c#

[英]changing the text box border style in windows form - c#

我有一個文本框,現在是正方形我想將該正方形轉換為橢圓形我正在使用 win forms 應用程序

任何人都可以告訴任何關於這個的想法

您可以使用SetWindowRgn API Function 更改 window 的形狀。 這個 function - 正如您在此處看到的 - 獲得三個 arguments:

  1. Window 句柄:可以是您的文本框句柄,您可以通過Handle屬性獲取它。
  2. A Window RGN :您可以通過調用CreateRoundRectRgn (或您可以在此處找到的其他 RGN 創建函數)來創建它
  3. A Boolean 確定重繪: 最好是真實的。

您可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM