设置UserControl的最大高度而不设置最大宽度

时间:2017-10-29 20:23:05

标签: c# .net winforms user-controls windows-forms-designer

我有一个带有预定义值的ComboBox的UserControl。我使用此控件的程序员将能够水平拉伸控件,但不能垂直拉伸。

Here@SLaks建议设置MaximumSize属性,但是,我必须限制宽度,这是我不想要的。

那么如何实现呢?

1 个答案:

答案 0 :(得分:1)

您可以覆盖SetBoundsCore并使其使用ComboBox的高度作为控件的高度:

protected override void SetBoundsCore(int x, int y, int width, int height,
    BoundsSpecified specified)
{
    base.SetBoundsCore(x, y, width, comboBox1.Height, specified);
}

注1:如果您的UserControl仅包含ComboBox,则最好从ComboBox派生,而不是创建包含ComboBox的用户控件一个ControlDesigner

注2:您可以在设计器中明确指出,通过创建新的SelectionRules并覆盖System.Design属性,可以从左侧或右侧调整控件。为此,请添加对using System.Windows.Forms.Design; public class MyControlDesigner : ControlDesigner { public override SelectionRules SelectionRules { get { return SelectionRules.LeftSizeable | SelectionRules.RightSizeable | SelectionRules.Moveable; } } } 程序集的引用,然后创建自定义设计器:

[Designer(typeof(MyControlDesigner))]

然后用这种方式用designer属性来装饰你的自定义控件就足够了:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    imgLabel_Click(imgLabel, nothing)
End Sub