强制控制宽度或高度?

时间:2010-10-23 16:55:15

标签: c# winforms controls

我有一个控件,我需要强制执行某个WidthHeight,具体取决于名为Orientation的属性,显然可以是Vertical或{ {1}}。

因此,如果Horizontal属性为Orientation,那么Vertical 必须 始终为2。 如果Width属性为Orientation,那么Horizontal 必须 始终为2.

我尝试了许多事情,包括Height,但它们似乎都不够好 例如......单行MaximumSize(将TextBox设置为Multiline。)?

3 个答案:

答案 0 :(得分:2)

以下是步骤:

  1. 通过创建一个继承自ControlDesigner
  2. 的空类来为控件实现设计器
  3. 在此设计器类中,覆盖SelectionRules属性并返回要用于控件的任何规则;例如,仅当您要禁止垂直调整大小时才设置left-和right-sizeable。
  4. 通过使用DesignerAttribute修饰控件类,并在属性的构造函数中引用设计器类,将设计器附加到控件上。

答案 1 :(得分:0)

这是自定义用户控件吗?如果是这样,您可以将此逻辑构建到Orientation属性中。

如果它是自定义控件,则可以编写Orientation属性,以便set方法检查值(可以是Vertical或Horizo​​ntal),然后相应地静默设置Width / Height。在同一个set方法中,您还可以根据值更新两个bool字段,如dontLetUserSetWidth和dontLetUserSetHeight。

这看起来有用吗?如果我没有正确地阅读你的问题,我很抱歉!

答案 2 :(得分:0)

  

作为示例...单行TextBox(Multiline设置为False。)

考虑到这个具体示例,当多行设置为false时,您必须在垂直图形更改时显式处理多线模式。