C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.99450 の関連記事表示

<< 0 >>
■99450  Re[2]: フラグが変化したときに発生するイベントを作りたい
□投稿者/ kiku -(2022/04/13(Wed) 09:28:09)
    No99449 (魔界の仮面弁士 さん) に返信
    > ■No99448 (あいす さん) に返信
    >>C#でボタンをクリックしたら発生するイベントのように
    >>自分が用意したフラグが変化したら発生するイベントを
    >>作りたいのですがどのようにすればいいのでしょうか。
    > 
    > フラグは変数ではなくプロパティとして実装しておけば、
    > setter によって「フラグが変更された時」を捕らえる事ができますね。
    
    魔界の仮面弁士さんからご説明頂いたことを
    そのままソースにするとこんな感じになります。
    
        public partial class Form1 : Form
        {
            TestClass testClass;
            public Form1()
            {
                InitializeComponent();
                testClass = new TestClass();
                testClass.YourEventName += TestClass_YourEventName;
            }
            private void button1_Click(object sender, EventArgs e)
            {
                testClass.TestFlag = true;
            }
            private void button2_Click(object sender, EventArgs e)
            {
                testClass.TestFlag = false;
            }
            private void TestClass_YourEventName(object sender, TestClass.HogeEventArgs e)
            {
                if (e.TestFlag)
                {
                    label1.Text = "true";
                }
                else
                {
                    label1.Text = "false";
                }
            }
        }
    
        class TestClass
        {
            public class HogeEventArgs : EventArgs
            {
                public HogeEventArgs(bool testFlag)
                {
                    TestFlag = testFlag;
                }
                public bool TestFlag { set; get; }
            }
            public event EventHandler<HogeEventArgs> YourEventName;
            protected virtual void OnYourEventName(HogeEventArgs e)
            {
                YourEventName?.Invoke(this, e);
            }
            private bool _TestFlag = false;
            public bool TestFlag
            {
                set {
                    this._TestFlag = value;
                    OnYourEventName(new HogeEventArgs(this._TestFlag));
                }
                get { return this._TestFlag; }
            }
        }
    
記事No.99448 のレス /過去ログ173より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -