0

私はまだ立ち往生しています。

ボタン付きのユーザー コントロールがあるとします。そしてdamnIt_ButtonClickedというイベント。メイン ウィンドウでは、モーダル ダイアログのようにコントロールの有効期間をエミュレートしたいのですが、そうではありません。

すべてを 1 つのメソッドにラップしたいのですが、コントロールのボタンをクリックすると true が返されます。

  public bool Show() {

      var control = new ControlWithSingleButton();
      bool result;

      control.damnIt_ButtonClicked += (object sender, EventArgs args) =>
      {
            result = true;
      };

      MainWindowGrid.Children.Add(control);
      MainWindowGrid.Visibility = Visibility.Visible;


      return result;
  }

今。問題は、このメソッドが常に false を返すことです。しかし、damnIt_ButtonClicked イベントが発生した場合にのみ結果を返す必要があります。ユーザーがボタンをクリックするまで、スレッドを待機させる必要があることを意味します。右?または、それをどのように行うべきか。お願い助けて....

4

2 に答える 2

0

ソリューションを再設計する必要があります。あなたがやろうとしていることのより広い範囲を知らなくても、ここに可能な解決策があります.

private bool buttonResult;

public void Show() {

  var control = new ControlWithSingleButton();
  bool result;

  control.damnIt_ButtonClicked += (object sender, EventArgs args) =>
  {
        this.ProcessButtonClick();
  };

  MainWindowGrid.Children.Add(control);
  MainWindowGrid.Visibility = Visibility.Visible;

  }

private void ProcessButtonClick()
{
   this.buttonResult = true;
   //do whatever you would have before if Show had returned true
}
于 2010-08-04T20:21:17.123 に答える
0

あのね?あきらめる!

メイン以外のウィンドウを使用することは仕様上固く禁じられていましたが、コントロールをウィンドウにすることにしました。とにかく、それはクロムレス、ボーダーレスの透明なウィンドウになるので、誰も違いを見ることができません.

どうもありがとう。

于 2010-08-05T13:33:54.677 に答える