2013-03-06 42 views
1

我花了很多天來解決這個問題。 我從System.Web.UI.WebControls.TextBox定製控件繼承如下:如何在設計時使用vs.net更改公共財產價值

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

using System.Web.UI; 
using System.ComponentModel; 

namespace Test 
{ 
    [ToolboxData("<{0}:MyCustomTextBox runat=server />")] 
    public class MyCustomTextBox : System.Web.UI.WebControls.TextBox 
    { 
     [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
     [RefreshProperties(RefreshProperties.All)] 
     [DefaultValue(InputType.Enum1)] 
     [Category("Appearance")] 
     public InputType UserInputType { get; set; } 

     [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] 
     [RefreshProperties(RefreshProperties.All)] 
     [DefaultValue(LetterCase.Enum3)] 
     [Category("Appearance")] 
     public LetterCase UserLetterCase { get; set; } 
    } 

    public enum InputType { Enum1, Enum2 } 

    public enum LetterCase { Enum3, Enum4 } 
} 

我已經找到了一些System.ComponentModel屬性。

我想要做的是,如果用戶將UserInputType的枚舉屬性更改爲InputType.Enum2,則UserLetterCase屬性應更改爲LetterCase.Enum4。 這些都應該發生在設計時使用visual studio.net 2010. 任何想法?

回答

0

而是執行這些自動屬性,創建後備字段,並在set部分所需的更改:

private InputType _userInputType; 
    public InputType UserInputType 
    { 
     get 
     { 
      return _userInputType; 
     } 
     set 
     { 
      _userInputType = value; 
      if (value == InputType.Enum2) 
       UserLetterCase = LetterCase.Enum4; 
     } 
    } 
+0

聯通哇... THX這麼多。我爲什麼這麼難以思考?該死的我... – 2013-03-06 11:49:19