27

如何使用 c# 在 windows 8 应用程序中显示消息框,例如在 windows phone 7 中调用 MessageBox.Show()?

4

6 回答 6

48
   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您可以按照本教程了解更多信息。

于 2013-03-13T07:22:38.097 回答
26

MessageDialog 类应该满足您的需要。

于 2012-09-15T07:28:50.483 回答
12

我更简单的方法,对于确认类型的消息框:

  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
  }
于 2014-07-27T14:48:54.897 回答
8

为了更简单的方法,只显示消息文本和确定按钮。使用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");
于 2013-05-22T18:32:35.630 回答
2

补充花絮:

它出现在现代 Windows 应用程序中,在您的应用程序发出 Window.Current.Active() 调用之前不会显示 MessageDialog,这通常发生在应用程序类的 OnLaunched() 方法中。如果您尝试使用 MessageDialog 来显示启动异常之类的内容,请记住这一点。

我的测试表明 MessageDialog.ShowAsync() 实际上可能正在等待,但如果 Window.Current.Active() 尚未被调用,则不会显示对话框,因此从代码执行的角度来看,它看起来一切正常但没有对话框被陈列。

如果目标是在启动期间显示异常,我可以想到两个选项(可能还有更多)。

  1. 捕获异常信息,然后等待显示,直到 Window.Current.Activate() 之后。如果异常是这样的,应用程序可以从中恢复并继续启动,这可以工作。例如,如果在恢复保存的状态信息时出现错误,应用程序可能希望向用户报告该错误,然后继续启动,就好像没有保存状态一样。

  2. 如果情况是应用程序正在举手并打算终止,但想让用户知道发生了什么,那么另一种解决方案可能是拥有一个单独的专用代码块/方法,将新的干净框架插入 Windows .Current.Content,使用 Windows.Current.Activate() 激活它,然后调用 MessageDialog.ShowAsync()。我没有尝试过这种方法,所以我不确定是否还需要满足其他条件,比如可能将页面加载到框架中。

于 2015-07-29T16:03:26.583 回答
0

用于页面,如:

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();
}
于 2016-01-21T19:55:46.923 回答