0

重複の可能性:
別のフォームでイベントが発生した後に 1 つのフォームを更新する

関連情報: WPF アプリケーション、C#、Visual Studio 2010、.Net 4 の使用

Window1 と MainWindow の 2 つのウィンドウがあります。Window1 にはチェックボックスがあり、チェックすると、MainWindow の label1 が非表示に設定されます。これについてどうすればいいですか?

MainWindow newWindow = new MainWindow()新しいメインウィンドウを作ろうとしているわけではないのでできません。次のコードを試しましたが、例外がスローされました: {"オブジェクト参照がオブジェクトのインスタンスに設定されていません。"}`.

private void checkBox4_Checked(object sender, RoutedEventArgs e)
{
   if (checkBox4.IsChecked == true)
   {
       (Application.Current.MainWindow as MainWindow).label1.Visibility = 
                   Visibility.Hidden;
   }
   else
   {
       (Application.Current.MainWindow as MainWindow).label1.Visibility = 
                   Visibility.Visible;
   }
}

これについて最善の方法は何ですか?ありがとうございます。

4

2 に答える 2

2

にイベントを追加Window1:

public event Action<bool> SomethingChecked; //TODO rename to indicate what was checked

チェックボックスをオンにすると、そのイベントが発生します。

private void checkBox4_Checked(object sender, RoutedEventArgs e)
{
    if(SomethingChecked != null)
        SomethingChecked(checkBox4.IsChecked);
}

次に、メイン フォームからイベント ハンドラーを追加します。

Window1 other = new Window1();
other.SomethingChecked += checked => label1.Visibility = 
    checked ? Visibility.Visible : Visibility.Hidden;
于 2013-01-24T23:27:00.173 に答える
0

Window1 でイベントを作成し、そのイベントを MainWindow で処理します。

以下は単なる例であり、実際には機能するコードではありません...

MainWindow
{
    private void SomeStuff()
    {
        Window1 window = new Window1();
        window.CheckBoxClick += new OnCheckBoxClick(SomeMethod);
    }

    private void SomeMethod(bool state)
    {
         // use state;
    }
}
于 2013-01-24T23:29:16.483 に答える