我有一个文本框,它是方形的,现在我想把那个方块转换成椭圆形 我正在使用win form application
任何人都可以对此有所了解
答案 0 :(得分:3)
您可以使用SetWindowRgn
API函数更改窗口的形状。
这个函数 - 你可以看到here - 得到三个参数:
Handle
属性获取它。您可以从TextBox
创建子类,并使用OnHandleCreated
方法中的此函数创建椭圆形TextBox。课程可以是这样的:
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);
}
}
答案 1 :(得分:1)
创建由文本框继承的ur类,重写OnPaint。在winforms中使用自定义文本框。
答案 2 :(得分:1)
使用OvalShape控件并在其中放置一个文本框。文本框应该是一个不可见的。
或者,创建一个customcontrol并覆盖OnPaint,以便用graphics.DrawElipse绘制椭圆。
答案 3 :(得分:0)
如果您使用Windows窗体执行此操作,唯一的方法是创建新的用户控件并从TextBox继承您的控件。然后,您必须覆盖OnPaint方法并实现自己的绘图代码。
如果你可以使用WPF,它会更容易。如果您可以将应用程序设置为WPF应用程序,那么您需要做的就是将文本框放到表单上,然后放入形状的自定义模板中。