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 の enum プロパティを 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 に答える