如何使用 c# 在 windows 8 应用程序中显示消息框,例如在 windows phone 7 中调用 MessageBox.Show()?
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
}
为了更简单的方法,只显示消息文本和确定按钮。使用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() 尚未被调用,则不会显示对话框,因此从代码执行的角度来看,它看起来一切正常但没有对话框被陈列。
如果目标是在启动期间显示异常,我可以想到两个选项(可能还有更多)。
捕获异常信息,然后等待显示,直到 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();
}