Windows phone 7でMessageBox.Show()を呼び出すように、c#を使用してWindows 8アプリにメッセージボックスを表示する方法は?
6 に答える
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詳細については、このチュートリアルに従うことができます。
MessageDialog クラスはニーズに合うはずです。
確認タイプのメッセージボックスのより簡単な方法:
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
}
より簡単な方法としては、メッセージ テキストと 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");
追加情報:
最新の Windows アプリでは、アプリが Window.Current.Active() 呼び出しを行う前に MessageDialog が表示されないように見えます。これは通常、アプリ クラスの OnLaunched() メソッドで行われます。MessageDialog を使用して起動例外のようなものを表示しようとしている場合は、覚えておくことが重要です。
私のテストでは、 MessageDialog.ShowAsync() が実際に待機している可能性がありますが、 Window.Current.Active() がまだ呼び出されていない場合はダイアログが表示されないため、コード実行の観点からは、すべてが機能しているように見えますが、ダイアログはありません表示されています。
目標が起動時に例外を表示することである場合、2 つのオプションを考えることができます (他にもあるかもしれません)。
例外情報をキャプチャし、Window.Current.Activate() の後まで表示を待ちます。これは、アプリケーションが例外から回復して起動を続行できるような例外である場合に機能します。たとえば、保存された状態情報の復元中にエラーが発生した場合、アプリはそれをユーザーに報告する必要がありますが、保存された状態がないかのように起動を続行します。
アプリが手放して終了しようとしているような状況で、何が起こったのかをユーザーに知らせたい場合、別の解決策として、新しいクリーン フレームを Windows にプラグインする別の専用コード ブロック/メソッドを用意することが考えられます。 .Current.Content を取得し、Windows.Current.Activate() を使用してアクティブ化し、MessageDialog.ShowAsync() を呼び出します。私はこのアプローチを試していないので、ページをフレームにロードするなど、他の条件も満たす必要があるかどうかはわかりません。
次のようなページに使用します。
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();
}