実行時にユーザーがコントロールのサイズを変更できるようにする方法[.NET Winforms]?
-
05-07-2019 - |
質問
Winformsにあります。
TOP、BOTTOM、LEFTに固定されたUserControlがあります。ユーザーが何らかの方法で右の境界線をドラッグし、水平方向にサイズを変更できるようにしたいと思います。
コントロールはフォームに直接配置され、「スプリッタ」を配置するパネルやグループボックスはありません。
ユーザーが実行時にコントロールのサイズを変更できるようにする方法はありますか?
解決
Private Declare Function GetWindowLongA Lib "User32" (ByVal hWnd As Integer, ByVal nIndex As Integer) As Long
Private Declare Function SetWindowLongA Lib "User32" (ByVal hWnd As Integer, ByVal nIndex As Integer, ByVal dwNewLong As Long) As Long
Private Declare Sub SetWindowPos Lib "User32" (ByVal hWnd As Integer, ByVal hWndInsertAfter As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal CX As Integer, ByVal CY As Integer, ByVal wFlags As Integer)
Const SWP_NOSIZE = &H1
Const SWP_NOZORDER = &H4
Const SWP_NOMOVE = &H2
Const SWP_DRAWFRAME = &H20
Const GWL_STYLE = (-16)
Const WS_THICKFRAME = &H40000
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ResizeControl(TextBox1, Me)
End Sub
Sub ResizeControl(ByVal ControlName As Control, ByVal FormName As Form)
Dim NewStyle As Long
NewStyle = GetWindowLongA(ControlName.Handle, GWL_STYLE)
NewStyle = NewStyle Or WS_THICKFRAME
NewStyle = SetWindowLongA(ControlName.Handle, GWL_STYLE, NewStyle)
SetWindowPos(ControlName.Handle, FormName.Handle, 0, 0, 0, 0, SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME)
End Sub
所属していません StackOverflow