web-dev-qa-db-ja.com

Windowsストアアプリでメッセージを表示する方法は?

Windows Phone 7でMessageBox.Show()を呼び出すようなC#を使用してWindows 8アプリでメッセージボックスを表示するにはどうすればよいですか?

27
user1547566

MessageDialogクラス は、ニーズに合うはずです。

26
JP Alioto
   MessageDialog msgDialog = new MessageDialog("Your message", "Your title");

   //OK Button
   UICommand okBtn = new UICommand("OK");
   okBtn.Invoked = OkBtnClick;
   msgDialog.Commands.Add(okBtn);

   //Cancel Button
   UICommand cancelBtn = new UICommand("Cancel");
   cancelBtn.Invoked = CancelBtnClick;
   msgDialog.Commands.Add(cancelBtn);

   //Show message
   msgDialog.ShowAsync();

そして、あなたのコールバック

private void CancelBtnClick(IUICommand command)
{
}

private void OkBtnClick(IUICommand command)
{
}


PS このチュートリアル をフォローできます

48

私の簡単な方法、確認タイプのメッセージボックス:

  var dlg = new MessageDialog("Are you sure?");
  dlg.Commands.Add(new UICommand("Yes", null, "YES"));
  dlg.Commands.Add(new UICommand("No", null, "NO"));
  var op = await dlg.ShowAsync();
  if ((string)op.Id == "YES")
  {
    //Do something
  }
12
Antonio Bakula

より簡単な方法として、メッセージテキストと[OK]ボタンを表示するだけです。 _Windows.UI.Popups_名前空間を使用します。メソッドmessagebox()を作成します

_using Windows.UI.Popups;
protected async void messageBox(string msg)
{
      var msgDlg = new Windows.UI.Popups.MessageDialog(msg);
      msgDlg.DefaultCommandIndex = 1;
      await msgDlg.ShowAsync();
}
_

次に、コードでこのメソッドを次のように呼び出します

_messageBox("Unexpected error held");
_
8
Muhammed Mufees

追加情報:

最新のWindowsアプリでは、アプリがWindow.Current.Active()呼び出しを行う前にMessageDialogが表示されません。これは通常、アプリクラスのOnLaunched()メソッドで発生します。 MessageDialogを使用して起動時例外のようなものを表示しようとしている場合は、留意することが重要です。

私のテストでは、MessageDialog.ShowAsync()は実際に待機する可能性がありますが、Window.Current.Active()がまだ呼び出されていない場合はダイアログが表示されないため、コード実行の観点からはすべてが機能しているがダイアログはないように見えます表示されています。

目標が起動時に例外を表示することである場合、2つのオプションを考えることができます(もっとあるかもしれません)。

  1. 例外情報をキャプチャし、Window.Current.Activate()の後まで表示するのを待ちます。これは、アプリケーションが例外から回復して起動を続行できるような例外である場合に機能します。たとえば、保存された状態情報の復元中にエラーが発生した場合、アプリはそのことをユーザーに報告しますが、保存された状態がないかのように起動を続けます。

  2. アプリが手を上げて終了しようとしているが、ユーザーに何が起こったかを知らせたいという状況の場合、別の解決策は、新しいクリーンフレームをWindowsにプラグインする別個の専用コードブロック/メソッドを持つことです.Current.Content、Windows.Current.Activate()を使用してアクティブにし、MessageDialog.ShowAsync()を呼び出します。このアプローチを試したことがないので、ページをフレームにロードするなど、他の条件も満たす必要があるかどうかはわかりません。

2
Keith

次のようなページに使用:

private async void AppBarButton_Click(object sender, RoutedEventArgs e)
{
    Windows.UI.Popups.MessageDialog a = new Windows.UI.Popups.MessageDialog("hello this is awth");
    await a.ShowAsync();
}
0
user5823144