2010-10-23 137 views
2

我有一个控制,我需要强制执行某个WidthHeight,这取决于名为Orientation的属性,该属性显然可以是VerticalHorizontal强制控制宽度或高度?

所以如果Orientation属性Vertical,那么Width必须总是是2
如果Orientation属性为Horizontal,那么Height必须总是是2

我已经尝试了很多东西,包括MaximumSize,但它们都没有效果。
作为一个例子...单行TextBox(配Multiline设置为False。)?

回答

2

这些步骤如下:

  1. 通过创建从ControlDesigner继承的空类实现该控件的设计。
  2. 在这个设计器类,覆盖SelectionRules属性,并返回要使用您控制的任何规则;例如,仅当您要禁止垂直调整大小时才设置左右大小。
  3. 装设计师的控制通过与DesignerAttribute装饰你的控件类,并在属性的构造函数引用您的设计器类。
+0

谢谢你的回答。我会马上测试这个! – Vercas 2010-10-23 17:22:23

+0

再次感谢你,这也回答了我要问的关于执行位置的另一个问题!它完美的工作! – Vercas 2010-10-23 17:32:12

+0

不客气! – CesarGon 2010-10-24 10:51:27

0

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

如果它是一个自定义的控制,则可以写方向属性,使得设定方法检查值(这将是垂直或水平),然后悄悄相应地设置宽度/高度。在同样的设置方法中,您还可以根据值更新两个bool字段,如dontLetUserSetWidth和dontLetUserSetHeight。

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

+0

不,我会提到用户控件而不是控件。我可以在那里构建逻辑,但是用户在设置属性后可以调整控件的大小。 – Vercas 2010-10-23 17:23:59

0

举个例子......单行文本框(具有多行设置为False。)

考虑这个具体的例子,具有多设置为false,你必须明确地处理多行垂直图形变化时的模式。

+0

我不明白...你是什么意思? – Vercas 2010-10-23 17:22:01