在Web开发中,模态对话框是一种常见的用户界面元素,用于在不离开当前页面的情况下与用户交互。然而,JavaScript原生的弹出窗口模型面临着“弹窗拦截器”的问题。为了解决这个问题,开发了一个自定义的模态对话框组件,它适用于ASP.NET2.0。这个组件不是弹出窗口,也不是新窗口,而是出现在所有对象的顶部,并且隐藏其他对象,使得其他控件无法被点击。
这个组件的核心思想非常简单。在m控制中,有一些面板(
这个控件有三个事件:
有两种样式:
以及四种图标:
可以通过编辑Mbox.ascx.cs中的InitializeIcon和InitializeStyle函数来编辑视觉效果。
只需要将Mbox.ascx用户控件和Resources文件夹添加到项目中。然后,将用户控件拖放到Web表单中。
在default.aspx或其他文件中添加以下代码:
protected void Page_Load(object sender, EventArgs e)
{
// 绑定事件到消息框按钮...
Mbox1.Btn1Clicked += new EventHandler(Mbox1_Btn1Clicked);
Mbox1.Btn2Clicked += new EventHandler(Mbox1_Btn2Clicked);
}
void Mbox1_Btn2Clicked(object sender, EventArgs e)
{
Response.Write("2nd button clicked");
}
void Mbox1_Btn1Clicked(object sender, EventArgs e)
{
Response.Write("1st button clicked");
}
显示方法及其重载...
protected void Button1_Click(object sender, EventArgs e)
{
Mbox1.Show("hede", "hodo");
}
protected void Button2_Click(object sender, EventArgs e)
{
Mbox1.Show("My test message", "Warning", "OK", "Cancel", null);
}
protected void Button3_Click(object sender, EventArgs e)
{
Mbox1.Show("My test message", "Warning", "OK", "Cancel", null, msg.MessageBoxIcons.Exclamation);
}
protected void Button4_Click(object sender, EventArgs e)
{
Mbox1.Show("My test message", "Warning", "OK", "Cancel", "Retry", msg.MessageBoxIcons.Exclamation, msg.MessageBoxStyle.Violet);
}