| ■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; }
}
}
|