在Windows 8 Modern界面应用程序中 ,已然没有了我们过去很熟悉的MessageBox,那么,如果我们需要弹出提示框怎么办呢?
因此,我们先来认识一个类——MessageDialog(位于Windows.UI.Popups命名空间)。对的,看名字估计也能猜个七八成了,我们正是要使用该类来显示弹出对话框。
第一步,先new一个MessageDialog实例;
第二步,向Commands集合添加若干个UICommand,至少一个,最多三个,胆子大的话,你可以试试添加四个。这个UICommand就是对话框上显示的按钮,就像我们过去在传统Windows下的消息框一样,至少一个按钮,也可能两个,或者三个。
第四步,显示消息框。
光看文字是有些抽象的,这样吧,下面我们来用实例来说明。
1、启动VS,新建一个空白页面的应用程序。
2、在MainPage.xaml中声明三个按钮,分别用来显示带有一个,两个,三个按钮的弹出框。
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<StackPanel VerticalAlignment="Center">
<StackPanel Orientation="Horizontal">
<Button Content="一个按钮的消息框" Click="onOKClick"/>
<Button Content="两个按钮的消息框" Click="onYesNoClick"/>
<Button Content="三个按钮的消息框" Click="onThirdClick"/>
</StackPanel>
<TextBlock x:Name="tbTip" Margin="3,6,0,0" FontSize="24"/>
</StackPanel>
</Grid>
3、分别在三个按钮的Click事件上右击,从弹出的菜单中选择“定位到事件处理程序”,这样在代码中会自动生成事件处理方法。
4、打开代码文件,引入以下命名空间。
using Windows.UI.Popups;
5、处理上面三个Click事件。
private async void onOKClick(object sender, RoutedEventArgs e)
{
MessageDialog msg = new MessageDialog("只带一个按钮的消息框。", "提示");
msg.Commands.Add(new UICommand("确定", new UICommandInvokedHandler(OnUICommand)));
await msg.ShowAsync();
}
private async void onYesNoClick(object sender, RoutedEventArgs e)
{
MessageDialog msg = new MessageDialog("带两个按钮的消息框。");
msg.Commands.Add(new UICommand("是",new UICommandInvokedHandler(OnUICommand)));
msg.Commands.Add(new UICommand("否", new UICommandInvokedHandler(OnUICommand)));
await msg.ShowAsync();
}
private async void onThirdClick(object sender, RoutedEventArgs e)
{
MessageDialog msg = new MessageDialog("带三个按钮的消息框。");
msg.Commands.Add(new UICommand("重试", new UICommandInvokedHandler(OnUICommand)));
msg.Commands.Add(new UICommand("忽略", new UICommandInvokedHandler(OnUICommand)));
msg.Commands.Add(new UICommand("取消", new UICommandInvokedHandler(OnUICommand)));
// 默认按钮索引
msg.CancelCommandIndex = 2;
msg.DefaultCommandIndex = 0;
await msg.ShowAsync();
}
async void OnUICommand(IUICommand cmd)
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
this.tbTip.Text = "您点击了 " + cmd.Label + " 按钮。";
});
}
在实例化UICommand时,我们使用了以下构造函数。
public UICommand(string label, UICommandInvokedHandler action);
指定一个与UICommandInvokedHandler委托绑定的方法,这样,当某个UICommand被用户单击后,会调用UICommandInvokedHandler绑定的对应方法,在本例中,所有UICommand都绑定到同一个方法。
此外,MessageDialog有两个属性应当注意一下:
1、CancelCommandIndex:默认“取消”按钮的索引,这个索引是对应于Commands中添加的UICommand的索引,从0开始,按添加顺序,第一个UICommand的索引为0,第二个UICommand的索引为1,第三个为2,依此类推(当然,最多就只有三个,索引2)。假如CancelCommandIndex属性设置了1,那么,消息框中的第二个按钮就是默认的“取消”命令,只要按下ESC键就能触发。
2、DefaultCommandIndex:默认“确定”指令的索引,例如设置为0,即Commands中第一个按钮为默认命令,只要按下回车键就能触发。
要显示MessageDialog,调用ShowAsync方法,注意这个方法是异步方法,要用await关键字(C# 5.0),同时,凡是调用了异步方法并加有await关键字的方法,在定义时还要加上async关键字。
现在,我们可以运行应用程序。
分享到:
相关推荐
本资源实现如下:用C++架构了一个适合windows游戏开发的简易框架,效仿的MFC,能使用MFC类库进行面相对象游戏编程,简单实用 我将其取名为BCF:BlueCoder Frame 大家可以多多测试一下,如发现bug,请到我的博文中...
CSLA .NET是一个.NET软件开发框架,帮助开发者“为Windows、Web、面向服务和工作流等应用构建强大和可维护的业务逻辑层”。 CSLA是Component-based, Scalable, Logical Architecture的简写,CSLA . NET是Rockford ...
html5消息框JS网页特效
Winform自定义消息框,好看的消息提示Alert源码,国外大神,很基础的实现,可以在此基础上进行优化和进一步调整。Winform控件、Winform优美提示框、消息框、Alert信息弹窗、Notification
Windows 常用消息大全:Windows消息分布,常用Windows消息,通知消息-按钮, 通知消息-组合框, 通知消息-编辑框等
在android开发中,显示消息框有多种方法
asp.net弹出消息框 类似msn的消息框asp.net弹出消息框 类似msn的消息框
windowsFrom下的消息框Messagebox.show()#windowsFrom下的消息框Messagebox.show()#windowsFrom下的消息框Messagebox.show()#windowsFrom下的消息框Messagebox.show()
用VC++ 6.0实现,包含各种消息框应用的源代码
Labview 自定义消息框实例。模式包括:疑问,提示,警告,错误。可以设置标题文本,按钮类型。
jquery-notific8是一款仿Windows8消息提示框效果的jQuery插件。它内置了多种消息提示框的主题样式,并且可以自定义自己的主题样式。它还可以设置自动关闭,显示图标,显示位置等,功能非常强大。
js chrome Notification 在windows任务栏上显示消息框
Winform自定义消息框(过几秒可自动消失)
消息框,,,网页消息框收集 消息框,,,网页消息框收集 消息框,,,网页消息框收集 消息框,,,网页消息框收集
Windows自带的消息框比较丑,特别是转到WIN7下更加,项目中用到的消息框非常多,基本上有提示信息、错误信息、询问信息这三种,从美观角度,MessageBox.show()这个方法出来的消息框有点不尽人意,于是自己写了一个,...
提供vc开发的消息框的所有代码,用vc6.0打开后可学习其怎样实现
弹出消息框,弹出确认框,弹出aspx内容页。注:支持框架集 欢迎提出问题 简介:该内容有三个控件。。dmessage控件用于弹出消息框和确认框。。。有两个事件一个确认和一个取消(确认框时);dpage用于弹出自定义网页...
VC 中消息框如何创建,相当基础希望能给新手带来帮助
主要是配合博客中“WinForm做的可展开收起的消息框”这篇文章的示例
WindowsWINDOWSWhite:一个新的Windows界面开发测试框架软件测试一种新的界面测试框架发布了,名为White。White与WatiN类似,它封装了微软的UIAutomation库和Window消息,可以用于测试包括Win32,WinForm,WPF和SWT...