0

カスタムメッセージボックスの待機をプログラムする方法 OK、キャンセル、はい、応答なし? メッセージボックスには英語しかないので、私の自然言語のためにカスタムメッセージボックスを使用しています。

private MessageBoxService CustomMsgBox= new MessageBoxService();

public async void Handle(RecordRequest message)
{
    AutoResetEvent waitHandle = new AutoResetEvent(false);
    Dispatcher.BeginInvoke(() =>
    {
         CustomMsgBox.Closed += CustomMsgBox_Closed;
         CustomMsgBox.Closed += (s, e) => waitHandle.Set();
         CustomMsgBox.Show(
         "Login Please! ",
         "Kayıt",
         MessageBoxServiceButton.OKCancel);
    });

    waitHandle.WaitOne();

    // Must Wait MessageBox Ok or Cancel like Normal MessageBox!!!
    Login.IsOpen= true;

    // do something ...
}

void CustomMsgBox_Closed(object sender, EventArgs e)
{
    this.CustomMsgBox.Closed -= this.CustomMsgBox_Closed;
    string rst = this.CustomMsgBox.Result.ToString();

}

通常、wp8 メッセージ ボックスは、[OK]-[キャンセル] をクリックするとロックされます。しかし、My Costom MessageBox は待機していません。[OK-キャンセル] をクリックするまで CustomMsgBox をロックする方法。

使用例:

private PixelLab.Common.MessageBoxService _service = new PixelLab.Common.MessageBoxService();
private void Button_Click(object sender, RoutedEventArgs e)
{
    this._service.Closed += this.MessageBoxService_Closed;
    this._service.Show(
     "test",
     "alo!",
    MessageBoxServiceButton.OKCancel);

    //if (_service.IsOpen == true)
    //{
    //    MessageBoxResult rslt = _service.Result;
    //    if (rslt == MessageBoxResult.No)
    //    {
    //        MessageBox.Show("işlem iptal edildi");
    //    }
    //    else
    //    {
    //        MessageBox.Show("işlem onaylandı");
    //    }
    //}
}

private void MessageBoxService_Closed(object sender, EventArgs e)
{
    this._service.Closed -= this.MessageBoxService_Closed;
    string rst  = this._service.Result.ToString();
}
4

0 に答える 0