Windows 7中的控件缩放问题

时间:2011-09-27 13:31:47

标签: .net windows vb.net winforms windows-7

我的.net winforms程序中有一些自定义用户控件,当用户选择较大的文本大小时,无法正确显示。此设置: enter image description here

我的控件看起来像这样,

enter image description here

而不是像这样,

enter image description here

区域和发货到区域的帐单都是自定义控件。我不知道这是否有助于解决这个问题,但我确实每个都有代码来帮助扩展电话/传真区域以便很好地扩展,就像这个代码来自控制账单,

    Private Sub panFaxPhone_Resize(sender As Object, e As System.EventArgs) Handles panFaxPhone.Resize
            panFax.Width = (panFaxPhone.Width / 2) - 1
            panPhone.Width = (panFaxPhone.Width / 2) - 1
            panFax.Left = panFaxPhone.Width - panFax.Width
    End Sub

如何在仍然尊重用户对较大文本的选择的同时正确调整控件的大小(我不想将AutoScaleMode设置为None)?

更新:   在玩了很长时间之后,这似乎是儿童控件中锚点的问题。如下图所示,内部黑框是控件,边框打开,文本框(如名称)左右固定,应拉伸以填充控件,但不要。

enter image description here

1 个答案:

答案 0 :(得分:1)

它很简单似乎默认控件缩放只是不使用锚点。我不知道为什么,也无法解释。但我确实找到了解决方法。请参阅下面我添加到控件中的代码。如果你能提供解释,我将不胜感激。

    Private ChildControlScale As Double = 0
    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        ChildControlScale = txtAddress.Width / Me.Width

    End Sub

    Protected Overrides Sub ScaleControl(factor As System.Drawing.SizeF, specified As System.Windows.Forms.BoundsSpecified)
        MyBase.ScaleControl(factor, specified)
        If ChildControlScale <> 0 Then
            For Each ctrl As Control In Me.Controls
                ctrl.Width = Me.Width * ChildControlScale
            Next
        End If
    End Sub