0

我正在尝试制作一个用户控件,它是位于“确定”和“取消”按钮上方的 3D 线,有时会在 Thunderbird 窗口中看到:

http://s11.postimage.org/gh45ux9wj/thunderbird1.png

我不想每次将用户控件放在表单上时都必须手动设置锚属性,这就是为什么我想在用户控件中使其自动停靠到父级(左=0,宽度=父级)。宽度)。

但是,我并没有真正做到这一点。

我的尝试很多,所以我不确定我应该在这里发布什么。

我的假设是我应该使用

Private Sub UserControl1_ParentChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.ParentChanged

    Me.SetBounds(0, Me.Top, Me.Parent.Width, 0, BoundsSpecified.X Or BoundsSpecified.Y Or BoundsSpecified.Width)

End Sub

但这根本行不通。

4

1 回答 1

1

您需要为父Resize事件添加一个事件处理程序,以便每次父的大小更改时都会通知您。例如,这样的事情会起作用:

Public Class ThreeDLine
    Private _lastParent As Control

    Private Sub Parent_Resize(ByVal sender As Object, ByVal e As EventArgs)
        resizeToParentWidth()
    End Sub

    Private Sub Divider_ParentChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.ParentChanged
        If _lastParent IsNot Nothing Then
            RemoveHandler _lastParent.Resize, AddressOf Parent_Resize
        End If
        _lastParent = Parent
        If Parent IsNot Nothing Then
            AddHandler Parent.Resize, AddressOf Parent_Resize
            resizeToParentWidth()
        End If
    End Sub

    Private Sub resizeToParentWidth()
        If Parent IsNot Nothing Then
            Me.Left = 0
            Me.Width = Parent.ClientSize.Width
        End If
    End Sub
End Class
于 2012-10-16T14:32:25.607 回答