在 VB.Net 和 C# 中,服务器端消息框

分享于 

10分钟阅读

Web开发

  繁體

介绍

使用 JavaScript,你可以在页面加载或者将页内容呈现到浏览器时访问对话框。 在你通过JavaScript处理功能时,没有办法从用户那里获得确认。 为此,你必须使用服务器端消息框。 服务器端消息框提供了一个选项,可以根据某些功能检查从用户获得确认。 用户点击确认后,它根据用户选择来处理功能。

在对话框中显示消息,等待用户单击按钮,并返回一个值,指示用户单击的按钮。 根据用户选择,可以执行要执行的功能。

Windows 应用程序相比,基于web的解决方案实现这一点有些困难。 同时,你可以使用JavaScript实现这一点。 JavaScript实现有一些限制,比如无法自定义消息框中的按钮。

在本文中,我没有详细地解释我的实现。 在这里,我提供了实现的代码。 希望你能够了解所有问题的实现。

在实现我的DLL之后,你可以得到如下所示的消息框:

此框的功能

  • 你可以动态更改标题文本。
  • 你可以动态更改标题字体。
  • 你可以动态更改标题字体大小。
  • 你可以动态更改标题字体样式。
  • 你可以动态更改标题字体名称。
  • 你可以动态更改标题的颜色。
  • 你可以动态更改消息文本。
  • 你可以动态更改邮件字体。
  • 你可以动态更改邮件字体大小。
  • 你可以动态更改消息字体样式。
  • 你可以动态更改邮件字体名称。
  • 你可以动态更改图像。
  • 你可以动态更改图像边框。
  • 你可以动态更改图像边框颜色。
  • 你可以动态更改消息框的颜色。
  • 你可以更改消息框的边框颜色,动态调整大小。
  • 你可以动态更改所需的按钮,Yes/No/Cancel/Ignore.
  • 你还可以动态更改按钮前景色,边框,样式 等等。

显示消息框时,所有窗体控件都处于禁用状态,反之亦然。 你甚至可以使用鼠标拖动消息框。

DLL实现

转到解决方案资源管理器,单击Add引用,并指定具有消息框控件类实现的DLL文件的路径。

按以下步骤操作:

  • 添加下面的代码行,在web窗体代码 behind的顶部: VB.NET
Imports NewMsgBoxAsp.Holool.Anwar.Web.Controls.UI
C#
Using NewMsgBoxAsp.Holool.Anwar.Web.Controls.UI;
  • 创建 MessageBox 类的实例,以访问它的属性和方法: VB.NET
Dim NBox As MessageBox = New MessageBox
C#
MessageBox NBox = New MessageBox();
  • 拖动web窗体上的ASP Button 并粘贴以下代码: VB.NET
PrivateSub Button1_Click(ByVal sender As System.Object, _
 ByVal e As System.EventArgs) Handles Button1.Click
 NBox.SetEnabledAll(False, Me)
 NBox.MB_Button = 3 NBox.MB_Top = 50 NBox.MB_Left = 150 NBox.MB_Width = 300 NBox.MB_Height = 150 NBox.MB_ButtonWidth = 60 NBox.MB_IDYes = "yesno" NBox.MB_IDNo = "yesno" NBox.MB_IDCancel = "yesno" NBox.MB_ButtonYesText = "Yes" NBox.MB_ButtonNoText = "No" NBox.MB_ButtonCancelText = "Cancel" NBox.MB_Title = "Uer Custom Title Here....." NBox.MB_Message = "Uer Custom Message Here....." NBox.MB_MessageFontSize = 10 NBox.MB_Image = "d.gif" NBox.MB_TitleBarColor = System.Drawing.Color.Orange
 NBox.MB_BoxColor = System.Drawing.Color.LightSeaGreen
 NBox.MB_BoxShadowColor = System.Drawing.Color.LightSalmon
 NBox.MB_TitleFontColor = System.Drawing.Color.Maroon
 NBox.MB_TitleFontName = "Ariel" NBox.MB_TitleFontBold = True NBox.MB_ImageBorderSize = 5 NBox.MB_ImageBorderColor = System.Drawing.Color.Red
 NBox.MB_ImageBorderStyle = BorderStyle.Double NBox.MB_ButtonBackColor = System.Drawing.Color.Green
 NBox.MB_ButtonBorderColor = System.Drawing.Color.Red
 NBox.MB_ButtonBorderWidth = 4 NBox.MB_ButtonBorderStyle = BorderStyle.Double NBox.MB_ButtonForeColor = System.Drawing.Color.Yellow
 NBox.MB_ButtonFontBold = True NBox.MB_BorderWidth = 5 NBox.MB_BorderStyle = BorderStyle.Double NBox.MB_BorderColor = System.Drawing.Color.Honeydew
 Panel1.Controls.Add(NBox)EndSub
C#
privatevoid Button1_Click(object sender, System.EventArgs e)
{
 MessageBox myBox = new MessageBox();
 myBox.MB_Button = 3;
 myBox.MB_Width = 300;
 myBox.MB_Height = 150;
 myBox.MB_ButtonWidth = 60;
 myBox.MB_IDYes = "yesno";
 myBox.MB_IDNo = "yesno";
 myBox.MB_IDCancel = "yesno";
 myBox.MB_ButtonYesText = "Yes";
 myBox.MB_ButtonNoText = "No";
 myBox.MB_ButtonCancelText = "Cancel";
 myBox.MB_Title = "Uer Custom Title Here.....";
 myBox.MB_Message = "Uer Custom Message Here.....";
 myBox.MB_MessageFontSize = 10;
 myBox.MB_Image = "d.gif";
 myBox.MB_TitleBarColor = System.Drawing.Color.Orange;
 myBox.MB_BoxColor = System.Drawing.Color.LightSeaGreen;
 myBox.MB_BoxShadowColor = System.Drawing.Color.Violet;
 myBox.MB_TitleFontColor = System.Drawing.Color.Red;
 myBox.MB_TitleFontName = "Ariel";
 myBox.MB_ImageBorderSize = 5;
 myBox.MB_ImageBorderColor = System.Drawing.Color.DarkGreen;
 myBox.MB_ImageBorderStyle = BorderStyle.Double;
 myBox.MB_ButtonBackColor = System.Drawing.Color.Green;
 myBox.MB_ButtonBorderColor = System.Drawing.Color.Red;
 myBox.MB_ButtonBorderWidth = 4;
 myBox.MB_ButtonBorderStyle = BorderStyle.Double;
 myBox.MB_ButtonForeColor = System.Drawing.Color.Yellow;
 myBox.MB_BorderWidth = 5;
 myBox.MB_BorderStyle = BorderStyle.Double;
 myBox.MB_BorderColor = System.Drawing.Color.Honeydew;
 Panel1.Controls.Add(myBox);
}

因此,单击按钮时,将显示消息框。 但是等等还有什么要做的。 通常,在 Windows 消息框中,用户可以将消息拖动到屏幕的任何位置。 这对于服务器控件是不可能的。 为了实现这个功能,我还设计了另外一个定制控件调用。

这个不可见控件可以用于在运行时将消息框拖到屏幕的任何部分,如任何其他经典 Windows messagebox。

若要使用这里控件,请右键单击工具箱,选择添加/新项,并指定 WebControlDraggerS DLL文件的路径。 控件在工具箱上后,将它的拖到窗体上。

接下来,将以下方法 ControlToDragPanel1_PreRender 粘贴到后面的代码中:

PrivateSub ControlToDrag(ByVal ctrl As Control)
 ' Define the JavaScript function for the specified control.Dim focusScript AsString = " <SCRIPT language="'javascript'">" & _"Drag.init(document.getElementById('" + ctrl.ClientID & "'), _
 null, null, null, null, null, false, false); </SCRIPT>"' Add the JavaScript code to the page. Page.RegisterStartupScript("FocusScript", focusScript)EndSubPrivateSub Panel1_PreRender(ByVal sender AsObject, _
 ByVal e As System.EventArgs) Handles Panel1.PreRender
 ControlToDrag(Panel1)EndSub

这里,Panel1 是放置在表单上的ASP PanelID,它充当自定义web消息框的容器。

最后,在代码 behind 中添加以下子例程,并在 Page_Load 事件中调用。

VB.NET
PrivateSub CheckYesNo()
 If Request.Form("yesno") = "Yes"Then Response.Write("Button - Yes - Selected")
 ElseIf Request.Form("yesno") = "No"Then Response.Write("Button - No - Selected")
 ElseIf Request.Form("yesno") = "Cancel"Then Response.Write("Button - Cancel - Selected")
 EndIf NBox.SetEnabledAll(True, Me)EndSub
C#
publicvoid CheckYesNo()
{
 if (this.Request.Form["yesno"]== "Yes")
 Response.Write("Button - Yes - Selected");
 elseif (this.Request.Form["yesno"]== "No")
 Response.Write("Button - No - Selected");
 elseif (this.Request.Form["yesno"]=="Cancel")
 Response.Write("Button - Cancel - Selected");
 myBox.SetEnabledAll(true,this);
}

增强功能:

这里 MessageBox 控件与经典 Windows MsgBox 类似,并且包含所有属性和事件。 它不需要任何增强。 实际上,消息框是使用 VB.Net ( 基于站点) 开发的。 现在我尝试将它转换为 C#,以进一步提高它的性能,并将dll集成到单个。

使用代码( dll )

我还在一个独立的ZIP file: 中将这个 MessageBox 功能放在一个完全演示中。 可以在同一项目文件夹( newmessagebox.dll 和 webcontroldragers.dll ) 中找到两个 dll。 你可以检查消息框的使用来添加和保存新记录。 你只需分解压缩文件并使用它。

服务器端消息框的不同视图

高兴的实例化 !

摇滚。。。。

按。


Server  SID  Message  BOX  服务器端  
相关文章