簡體   English   中英

如何使控件在運行時由[.NET Winforms]調整大小?

[英]How to make a control resizable by the user at runtime [.NET Winforms]?

它在Winforms中。

我有一個錨定在頂部,底部和左側的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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