VB.NET 和 C# 中的服务器端消息框






4.44/5 (17投票s)
2004年11月23日
4分钟阅读

278287

4321
一个自定义控件 - VB.NET 和 C# 中的服务器端消息框。
引言
使用 JavaScript,您可以在页面加载时或将页面内容渲染到浏览器后访问对话框。在通过 JavaScript 处理功能时,无法获得用户的确认。要实现这一点,您必须使用服务器端消息框。服务器端消息框提供了一个选项,可以根据某些功能检查来获得用户的确认。在获得用户点击确认后,它将根据用户的选择来处理功能。
消息框在对话框中显示一条消息,等待用户点击按钮,并返回一个指示用户点击了哪个按钮的值。根据用户的选择,可以执行要执行的功能。
与 Windows 应用程序相比,在基于 Web 的解决方案中实现这一点有点困难。同时,您可以使用 JavaScript 来实现。JavaScript 实现存在一些限制,例如无法自定义消息框中的按钮。
在本文中,我不会详细解释我的实现。在这里,我提供了实现代码。希望您能无障碍地理解实现。
实现我的 DLL 后,您将获得一个如下所示的消息框
此框的特性
- 您可以动态更改标题文本。
- 您可以动态更改标题字体。
- 您可以动态更改标题字体大小。
- 您可以动态更改标题字体样式。
- 您可以动态更改标题字体名称。
- 您可以动态更改标题背景颜色。
- 您可以动态更改消息文本。
- 您可以动态更改消息字体。
- 您可以动态更改消息字体大小。
- 您可以动态更改消息字体样式。
- 您可以动态更改消息字体名称。
- 您可以动态更改图像。
- 您可以动态更改图像边框。
- 您可以动态更改图像边框颜色。
- 您可以动态更改消息框背景颜色。
- 您可以动态更改消息框边框颜色、大小。
- 您可以动态更改所需的按钮,如“是 / 否 / 取消 / 忽略”。
- 您还可以动态更改按钮的前景色、边框、样式等。
当消息框显示时,所有表单控件都处于禁用状态,反之亦然。您甚至可以使用鼠标拖动消息框。
DLL 实现
转到解决方案资源管理器,点击*添加引用*,然后指定包含消息框控件类实现的 DLL 文件的路径。
请遵循以下步骤
- 在 Web 窗体代码隐藏文件的顶部,添加以下代码行
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();
- 将一个 ASP
Button
控件拖放到 Web 窗体上,并粘贴以下代码VB.NET
Private Sub 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) End Sub
C#
private void 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 消息框中,用户可以将消息拖到屏幕的任何位置。这在使用服务器控件时是不可能的。为了实现此功能,我设计了另一个名为
WebControlDraggerS
的自定义控件。这个不可见的控件可以用来在运行时将消息框拖到屏幕的任何部分,就像任何其他经典的 Windows 消息框一样。
要使用此控件,请右键单击工具箱,选择“添加/新项”,然后指定 WebControlDraggerS DLL 文件的路径。一旦控件出现在工具箱中,将其拖放到窗体上。
接下来,将以下方法
ControlToDrag
和Panel1_PreRender
粘贴到代码隐藏文件中Private Sub ControlToDrag(ByVal ctrl As Control) ' Define the JavaScript function for the specified control. Dim focusScript As String = " <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) End Sub Private Sub Panel1_PreRender(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Panel1.PreRender ControlToDrag(Panel1) End Sub
在这里,
Panel1
是窗体上放置的 ASPPanel
的ID
,它充当自定义 Web 消息框的容器。最后,在代码隐藏文件中添加以下子例程,并在
Page_Load
事件中调用它。VB.NET
Private Sub 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") End If NBox.SetEnabledAll(True, Me) End Sub
C#
public void 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(Web 应用程序)开发的。现在我正尝试将其转换为 C#,以进一步提高其性能并将 DLL 合并到一个中。
使用代码 (DLLs)
我还将此 MessageBox
功能的完整演示 ZIP 文件放在一个单独的 ZIP 文件中:一个功能齐全的数据录入表单,该表单与服务层功能交互以执行 DML 事务。这两个 DLL 文件可以在同一个项目文件夹中找到(NewMessageBox.dll 和 WebControlDragerS.dll)。您可以检查消息框的使用情况,以添加和保存新记录。您可以解压缩 ZIP 文件并使用它。
服务器端消息框的不同视图
愉快地实例化..!!
摇滚吧…… ………………
再见。