2012-02-04 81 views
3

我有一些公共屬性的用戶控件。一個特定的屬性是一個整數,但只能接受小於最大值const的正值。目前我做了以下工作:限制物業接受的價值範圍的正確方法是什麼?

private int markerwidth = 2; 
[DefaultValue(2), Category("Appearance"), Description("Size of position marker")] 
public int MarkerWidth 
{ 
    get 
    { 
     return this.markerwidth; 
    } 
    set 
    { 
     if (value > 0 && value <= MAXMARKERWIDTH) 
     { 
      this.markerwidth = value; 
     } 
    } 
} 

這樣做的工作,但失敗的默默。我想我可以添加邏輯來使用0爲負值,超過它的最大值,但它仍然不理想。

相比之下,TabValue屬性(從UserControl繼承)抱怨,如果我試圖在設計時(並假定在運行時)設置負值。

如果這實現了正常的異常?或者,還有更好的方法?一個屬性可能?

回答

6

最理想的方法是通過例外來實現。只要繼續你的代碼

if (value > 0 && value <= MAXMARKERWIDTH) 
    { 
     this.markerwidth = value; 
    } 
    else 
    { 
     throw new ArgumentOutOfRangeException("Invalid value. Value must be between 0 and " + MAXMARKERWIDTH.ToString()); 
    } 

編輯

是,Wiktor的Zychla是絕對正確的!我糾正了答案。

+0

感謝你們倆。我接受了這個,因爲它是更完整的答案。 – 2012-02-04 13:29:14

2

有一個內建的ArgumentOutOfRangeException,我想它適合在這裏。

相關問題