如何使用vs.net在设计时更改公共属性值

本文关键字:属性 vs 何使用 net | 更新日期: 2023-09-27 18:02:26

我花了好几天的时间来解决这个问题。我有一个自定义控件继承自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 }
}

我已经发现了一些系统。ComponentModel属性。

我想做的是,如果一个用户将UserInputType的enum属性更改为InputType。那么UserLetterCase属性应该改为LetterCase.Enum4。这些都应该在使用visual studio.net 2010的设计阶段发生。什么好主意吗?

如何使用vs.net在设计时更改公共属性值

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

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