1

我花了几天的时间来解决这个问题。我有一个继承自 System.Web.UI.WebControls.TextBox 的自定义控件,如下所示:

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时,这些都应该在设计时发生。有什么想法吗?

4

1 回答 1

0

不要将它们实现为自动属性,而是创建支持字段并在部件中进行所需的更改set

    private InputType _userInputType;
    public InputType UserInputType
    {
        get
        {
            return _userInputType;
        }
        set
        {
            _userInputType = value;
            if (value == InputType.Enum2)
                UserLetterCase = LetterCase.Enum4;
        }
    }
于 2013-03-06T11:37:39.063 回答