我的.net winforms程序中有一些自定义用户控件,当用户选择较大的文本大小时,无法正确显示。此设置:
我的控件看起来像这样,
而不是像这样,
区域和发货到区域的帐单都是自定义控件。我不知道这是否有助于解决这个问题,但我确实每个都有代码来帮助扩展电话/传真区域以便很好地扩展,就像这个代码来自控制账单,
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)?
更新: 在玩了很长时间之后,这似乎是儿童控件中锚点的问题。如下图所示,内部黑框是控件,边框打开,文本框(如名称)左右固定,应拉伸以填充控件,但不要。
答案 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