2010-10-23 138 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