我正在尝试创建一个usercontrol,这是一条位于“Ok”和“Cancel”按钮上方的3D线,有时会在Thunderbird窗口中看到:
http://s11.postimage.org/gh45ux9wj/thunderbird1.png
我不希望每次将usercontrol放在表单上时都手动设置anchor属性,这就是为什么我想在usercontrol中将它自动停靠到父级(Left = 0,Width) = Parent.Width)。
但是,我真的没办法这样做。
我的尝试很多,所以我不确定我应该在这里发布什么。
我的假设是我应该使用
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
但这根本不起作用。
答案 0 :(得分: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