いくつかのクラスを持つWPF/C#プログラムがあり、MainWindow.csクラスには、他のクラス内で発生する計算のステータスで更新したいユーザーコントロールがあります。グーグルして例を借りた後、他のクラス内でイベントを設定する方法を理解し、何かが変わったときにそれを呼び出す方法を見つけました。次に、メインクラスにそのイベントを関連付けるハンドラーがある限り、UIのもの(ステータスバーなど)を適切に更新できます。以下は、私が行っていることの簡略版です。
namespace Program
{
public partial class MainWindow : Window
{
public void SetUpHandler()
{
TestA.WorkerProgressThingie += new ProgressChangedEventHandler(TestA_ProgressChanged);
}
void TestA_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage
}
}
public class TestA
{
public static event ProgressChangedEventHandler WorkerProgressThingie;
public static void SomeFunction()
{
int value = 0;
//...(some boring code that does something here)
ProgressChangedEventArgs e = new ProgressChangedEventArgs(value, null);
if (WorkerProgressThingie != null)
WorkerProgressThingie.Invoke(null, e)
}
}
}
- 他のクラスからprogressBarプロパティを単純に呼び出す方法はありませんか?(つまり、MainWindow.progressBar.Value)?
- イベントを呼び出すときの「オブジェクト送信者」パラメーターの目的は何ですか。また、通常はどのように使用されるのでしょうか。私が見る例では、常に「null」を使用しています。
ありがとう!