C# 圆角文本框
如何在winform c中创建文本框的曲线边# 示例文本框: 这段代码是VBC# 圆角文本框,c#,winforms,system.drawing,C#,Winforms,System.drawing,如何在winform c中创建文本框的曲线边# 示例文本框: 这段代码是VB Protected Overrides Function ProcessCmdKey(ByRef msg _ As System.Windows.Forms.Message, _ ByVal keyData As System.Windows.Forms.Keys) As Boolean If msg.WParam.ToInt
Protected Overrides Function ProcessCmdKey(ByRef msg _
As System.Windows.Forms.Message, _
ByVal keyData As System.Windows.Forms.Keys) As Boolean
If msg.WParam.ToInt32() = CInt(Keys.Enter) Then
SendKeys.Send("{Tab}")
Return True
ElseIf msg.WParam.ToInt32() = CInt(Keys.Decimal) Then
SendKeys.Send(",")
Return True
End If
End Function
下一种方法是实际重写WM_Paint事件,在该事件中完成重绘。它利用API函数GetWindowDC和ReleaseDC获得控件的实际图形,包括非客户端区域
要获得圆角,使用如下所示的方法
如何在c#中创建是一个将VB.net代码转换为c#(或者反过来)的绝佳站点。如果你已经解决了这个问题,不要在问题中包含信息,把它作为一个单独的答案发布出来。
Protected Overrides Sub WndProc(ByRef m As _
System.Windows.Forms.Message) Handles MyBase.WndProc(m)
Select Case m.Msg
Case &HF 'WM_PAINT
Dim rect As New Rectangle(0, 0, MyBase.Width, MyBase.Height)
Dim hDC As IntPtr = GetWindowDC(Me.Handle)
Dim g As Graphics = Graphics.FromHdc(hDC)
If Me.Enabled Then
g.Clear(Color.White)
Else
g.Clear(Color.FromName("control"))
End If
DrawBorder(g)
DrawText(g)
ReleaseDC(Me.Handle, hDC)
g.Dispose()
Case &H7, &H8, &H200, &H2A3
'CMB_DROPDOWN, CMB_CLOSEUP, WM_SETFOCUS,
'WM_KILLFOCUS, WM_MOUSEMOVE, 'WM_MOUSELEAVE
UpdateState()
End Select
End Sub
Private Sub TekenRondeRechthoek(ByVal g As Graphics, _
ByVal pen As Pen, ByVal rectangle As Rectangle, _
ByVal radius As Single)
Dim size As Single = (radius * 2.0!)
Dim gp As GraphicsPath = New GraphicsPath
gp.AddArc(rectangle.X, rectangle.Y, size, size, 180, 90)
gp.AddArc((rectangle.X + (rectangle.Width - size)), _
rectangle.Y, size, size, 270, 90)
gp.AddArc((rectangle.X + (rectangle.Width - size)), _
(rectangle.Y + (rectangle.Height - size)), _
size, size, 0, 90)
gp.AddArc(rectangle.X, (rectangle.Y + _
(rectangle.Height - size)), size, size, 90, 90)
gp.CloseFigure()
g.DrawPath(pen, gp)
gp.Dispose()
End Sub