私はこれらを持っています:
- ラベルが付いたフォーム
- クラス「ビジネス」
- クラス「TimerHelper」
MyTime
プロパティを更新するときに、テキストボックスも更新したいのですが
私の「ビジネス」クラスは次のようになります。
public class MyBusinessClass : INotifyPropertyChanged
{
public void MakeSound(object sender, ElapsedEventArgs e)
{
// I change MyTime here
}
public event PropertyChangedEventHandler PropertyChanged;
private int myTime;
public int MyTime
{
get { return myTime; }
set
{
myTime= value;
InvokePropertyChanged(new PropertyChangedEventArgs("MyTime"));
}
}
public void InvokePropertyChanged(PropertyChangedEventArgs e)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, e);
}
}
「TimerHelper」は次のようになります。
public class TimerHelper
{
private Timer _timer;
public void Run()
{
_timer = new Timer(1000);
_timer.Enabled = true;
_timer.Elapsed += new ElapsedEventHandler(MyBusinessClass.MakeSound);
}
}
フォームで、私はこれを試しました:
myTextBox.DataBindings.Add("Text", new MyBusinessClass(), "MyTime");
しかし、メソッド「InvokePropertyChanged」で例外が発生します
私はこれを試しました:
Invoke((MethodInvoker)delegate { myTextBox.Text = new MyBusinessClass().MyTime; });
ただし、textBoxは更新されません