2009-11-26 21 views
0

它在Winforms中。如何使用户在运行时调整大小[.NET Winforms]?

我有一个用户控件,锚定TOP,BOTTOM和LEFT。我想允许用户以某种方式拖动它的右边框并水平调整它的大小。

该控件放置在表单中,没有面板或组框以放置“分离器”。

任何想法如何使用户在运行时调整控件的大小?

回答

1
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 
相关问题