vbmfc 创建对话框框有哪三种方法

关于vb的创建通用对话框的方法有哪几种?_百度知道
关于vb的创建通用对话框的方法有哪几种?
1、直接用对话框控件2、利用对话框类,代码创建3、利用窗体做对话框,设置窗体的显示模式
其他类似问题
为您推荐:
对话框的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁& & 在弹出模态对话框的同时设置他的位置 本例子掩饰与父窗体左上角对齐 根据BCB_FANS(四大名捕之追杀令)的bcb代码改写为 vb 的 仅供参考 附BCB_FANS源代码 BCB_FANS (四大名捕之追杀令) 当MessageBox对话框显示的时候,主窗口将失去焦点,知道了这一点,问题就& & &在弹出模态对话框的同时设置他的位置& & &本例子掩饰与父窗体左上角对齐& & &根据BCB_FANS(四大名捕之追杀令)的bcb代码改写为vb的& & &仅供参考& & &附BCB_FANS源代码& & &BCB_FANS (四大名捕之追杀令)& & &当MessageBox对话框显示的时候,主窗口将失去焦点,知道了这一点,问题就很简单了。下面是我的C++Builder代码。& & && & &//替换主窗口的窗口过程(我不知道VC怎样办到这一点,反正原理就是这样)& & && & &void __fastcall TForm1::WndProc(Messages::TMessage &Message)& & &{& & &&TForm.:WndProc(Message);& & && & &&//失去焦点之前& & &&if(Message.Msg == WM_NCACTIVATE)& & &&{& & &&}& & &&//失去焦点之后& & &&else if(Message.Msg == WM_ACTIVATE)& & &&{& & &&&&if(LOWORD(Message.WParam) == WA_INACTIVE)& & &&&&{& & &&&&&&HWND hW& & &&&&&&char ClassBuf[64];& & && & &&&&&&hWnd = (HWND)Message.LP& & &&&&&&GetClassName(hWnd,ClassBuf,sizeof(ClassBuf));& & && & &&&&&&//首先判断是否是MessageBox对话框,& & &&&&&&if(AnsiString(ClassBuf) == "#32770")& & &&&&&&{& & &&&&&&&&//再判断这个窗口是否是本身程序的窗口(因为别的程序弹出窗口时,你的主窗口也同样失去焦点)& & &&&&&&&&DWORD dwProcessID;& & && & &&&&&&&&GetWindowThreadProcessId(hWnd,&dwProcessID);& & && & &&&&&&&&if(dwProcessID == GetCurrentProcessId())& & &&&&&&&&{& & &&&&&&&&&&//移动窗口的位置& & &&&&&&&&&&MoveWindow(.......);//或者调用 SetWindowPos(...)& & && & &&&&&&&&&&//替换左边的标题栏图标(如果有的话)& & &&&&&&&&&&SetClassLong(hWnd,GCL_HICON,(long)Image1->Picture->Icon->Handle);& & && & &&&&&&&&&&//重新设置按钮的文本(比如把确定改为“OK 007”)& & &&&&&&&&&&HWND hT& & && & &&&&&&&&&&hTemp = GetDlgItem(hWnd,1);& & &&&&&&&&&&SetWindowText(hTemp,"New Text For Button");& & && & &&&&&&&&&&//.........其他操作& & &&&&&&&&}& & &&&&&&}& & &&&&}& & &&}& & &}& & &窗体& & Option Explicit& & Private Sub Form_Load()& & On Error Resume Next& & lhSysMenu = GetSystemMenu(hwnd, 0&)& & lRet = AppendMenu(lhSysMenu, MF_SEPARATOR, 0&, vbNullString)& & lRet = AppendMenu(lhSysMenu, MF_STRING, IDM_ABOUT, "About...")& & Show& & ProcOld = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)& & End Sub& & Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)& & Dim r As RECT& & Dim p As POINTAPI& & If Button = vbRightButton Then& & GetCursorPos p& & TrackPopupMenu lhSysMenu, 0, p.x, p.y, 0, Me.hwnd, r& & End If& & End Sub& & Private Sub Form_Unload(Cancel As Integer)& & SetWindowLong hwnd, GWL_WNDPROC, ProcOld& & End Sub& & &模块& & Option Explicit& & Public Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, lprc As RECT) As Long& & Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long& & Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long& & Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long& & Public Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As String) As Long& & Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long& & Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long& & Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long& & Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long& & Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long& & Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long& & Public Type RECT& & Left As Long& & Top As Long& & Right As Long& & Bottom As Long& & End Type& & Public Type POINTAPI& & x As Long& & y As Long& & End Type& & Public ProcOld As Long& & Public Const TPM_LEFTALIGN = &H0&& & Public Const WM_SYSCOMMAND = &H112& & Public Const MF_SEPARATOR = &H800&& & Public Const MF_STRING = &H0&& & Public Const GWL_WNDPROC = (-4)& & Public Const IDM_ABOUT As Long = 1010& & Public Const WM_COMMAND = &H111& & Public Const WM_ACTIVATE = &H6& & Public Const WA_INACTIVE = 0& & Public lhSysMenu As Long, lRet As Long& & Public Function WindowProc(ByVal hwnd As Long, ByVal iMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long& & Select Case iMsg& & Case WM_SYSCOMMAND& & If wParam = IDM_ABOUT Then& & MsgBox "VB Move Messagebox demo", vbInformation, "About"& & Exit Function& & End If& & Case WM_COMMAND& & If wParam = IDM_ABOUT Then& & MsgBox "VB Move Messagebox demo", vbInformation, "About"& & Exit Function& & Else& & CallWindowProc ProcOld, hwnd, WM_SYSCOMMAND, wParam, lParam& & WindowProc = 0& & Exit Function& & End If& & Case WM_ACTIVATE& & If wParam = WA_INACTIVE Then& & Dim mywnd As Long& & Dim buf As String * 64& & Dim oldrect As RECT& & GetWindowRect hwnd, oldrect& & mywnd = lParam& & GetClassName mywnd, buf, 64& & If Mid(buf, 1, 6) = "#32770" Then& & Dim processid As Long& & GetWindowThreadProcessId mywnd, processid& & If processid = GetCurrentProcessId() Then& & SetWindowPos mywnd, 0, oldrect.Left, oldrect.Top, oldrect.Right - oldrect.Left, oldrect.Bottom - oldrect.Top, 0& & End If& & End If& & End If& & End Select& & WindowProc = CallWindowProc(ProcOld, hwnd, iMsg, wParam, lParam)& & End Function& & 原文转自:http://www.ltesting.net
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
上一篇:下一篇:
相关经验教程
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.002 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.003 收益
的原创经验被浏览,获得 ¥0.001 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益
的原创经验被浏览,获得 ¥0.005 收益软件开发的家园,编程爱好者的天地.
&&|&&&&|&&
用vb使用对话框资源创建对话框
来源:互联网
时间: 08:04
'---------------------------------------------------------------------------------------'Module
:Module1'DateTime :1:35'Author
:Lingll'Purpose
:'---------------------------------------------------------------------------------------OptionExplicitPrivateDeclareFunctionLoadLibraryLib&kernel32.dll&Alias&LoadLibraryA&_
(ByVallpLibFileNameAsString)AsLongPublicDeclareFunctionFreeLibraryLib&kernel32.dll&(ByValhLibModuleAsLong)AsLongPublicDeclareFunctionCreateDialogParamLib&user32.dll&_
Alias&CreateDialogParamA&(_
ByValhInstanceAsLong,ByVallpNameAsLong,_
ByValhWndParentAsLong,ByVallpDialogFuncAsLong,_
ByVallParamInitAsLong)AsLongPublicConstSW_SHOWAsLong=5PublicDeclareFunctionShowWindowLib&user32.dll&(ByValhwndAsLong,ByValnCmdShowAsLong)AsLongPublicConstWM_SYSCOMMANDAsLong=&H112PublicConstSC_CLOSEAsLong=&HF060&PublicDeclareFunctionEndDialogLib&user32.dll&(ByValhDlgAsLong,ByValnResultAsLong)AsLongPublicDeclareFunctionGetMessageLib&user32.dll&Alias&GetMessageA&(ByReflpMsgAsMSG,ByValhwndAsLong,ByValwMsgFilterMinAsLong,ByValwMsgFilterMaxAsLong)AsLongPublicDeclareFunctionTranslateMessageLib&user32.dll&(ByReflpMsgAsMSG)AsLongPublicDeclareFunctionDispatchMessageLib&user32.dll&Alias&DispatchMessageA&(ByReflpMsgAsMSG)AsLongPublicDeclareSubPostQuitMessageLib&user32.dll&(ByValnExitCodeAsLong)PublicTypePOINTAPI
yAsLongEndTypePublicTypeMSG
hwndAsLong
messageAsLong
wParamAsLong
lParamAsLong
timeAsLong
ptAsPOINTAPIEndTypePublicFunctionDialogProc(_
ByValhwndDlg&,ByValuMsg&,_
ByValwParam&,ByVallParam&)AsLongIfuMsg=WM_SYSCOMMANDThen
IfwParam=SC_CLOSEThen
CallEndDialog(hwndDlg,0)
PostQuitMessage0
DialogProc=0
EndIfEndIfEndFunctionPublicSubMain()DimhDlg&DimtMsgAsMSGDimhIns&hIns=LoadLibrary(&shdoclc.dll&)hDlg=CreateDialogParam(hIns,24581,_
0,AddressOfDialogProc,0)FreeLibraryhInsShowWindowhDlg,SW_SHOWWhileGetMessage(tMsg,0,0,0)
CallTranslateMessage(tMsg)
CallDispatchMessage(tMsg)WendEndSub最好编译了再运行,不然可能会有些问题
对我有帮助
对我没帮助
以下留言只代表网友个人观点,不代表本站观点.VB6.0自由式对话框开发方法和实例分析
王春燕,杨英俊.VB6.0自由式对话框开发方法和实例分析.):61-63.
VB6.0自由式对话框开发方法和实例分析
中文关键词:&&
英文关键词:
作者单位&&&&
摘要点击次数:&404
全文下载次数:&953
&&&&&&本文给出了在VB6.0集成开发环境中,设计自由式对话框的方法,并进行了实例分析。
 COPYRIGHT (C)
中国科学院软件研究所trackbacks-0
  一.输入对话框:  制作输入对话框相对信息提示框来相对简单,在Visual Basic .Net,输入对话框是通过InputBox函数来完成的。以下是InputBox函数在Visual Basic .Net中的语法:
Public Function InputBox (ByVal Prompt As String ,Optional ByVal Title As String = "" , _Optional ByVal DefaultResponse As String = "" ,Optional ByVal XPos As Integer = -1 , _Optional ByVal YPos As Integer = -1) As String
  参数说明:  Prompt:&  必选项。以消息形式显示在对话框中的String表达式。Prompt的最大长度大约为1024个字符,具体取决于所用字符的宽度。如果 Prompt 中包含多个行,则可在各行之间用回车符(Chr(13))、换行符(Chr(10))或回车换行符的组合(Chr(13)&Chr(10))分隔各行。&  Title:  可选项。显示在对话框标题栏中的String表达式。如果省略Title则将应用程序名放在标题栏中。&  DefaultResponse:  可选项。显示在文本框中的String表达式,在没有提供其他输入时作为默认响应。如果省略DefaultResponse,则显示的文本框为空。&  XPos:  可选项。数值表达式,以缇为单位指定对话框的左边与屏幕左边的距离。如省略XPos,对话框将水平居中。&  YPos:  可选项。数值表达式,以缇为单位指定对话框的上边与屏幕上边的距离。如果省略ypos,则对话框位于在屏幕垂直方向距下边缘大约三分之一处。  以下就是在Visual Basic .Net中使用InputBox函数制作如图01所示对话框的具体代码:
Dim message , title , defaultValue As StringDim myValue As Objectmessage = "请输入数值,数值在1-3之间!" '设定对话框提示信息title = "输入提示框!" '设置对话框标题defaultValue = "1" '设定对话框中缺省的数值myValue = InputBox ( message , title , defaultValue , 100 , 100 )'设定对话框在左上角坐标位于桌面(100,100)区域显示
图01:通过InputBox函数制作的提示对话框
二.信息对话框简介:  由于信息对话框使用的频率较高,并且结构相对复杂,所以本文的重点就是介绍在Visual Basic .Net各种类型信息对话框的制作方法。Visual Basic .NetVisual Basic .Net制作信息对话框的方法主要有二种,这二种方法所使用的东西虽然完全不一样,但结果却异曲同工。第一种主要使用的是MsgBox函数,以前版本的Visual Basic也是使用MsgBox函数来制作信息对话框;另外一种使用的是.Net FrameWork SDK中提供的类库。  一个结构完整的信息对话框大致是由五个部分组成的,具体如图02所示:图02:一个完整的信息对话框组成结构图  三.MsgBox函数的参数结构和调用:  MsgBox函数中的参数主要由三个部分组成,第一部分:信息对话框的显示内容,即图01中第二部分内容,这个部分是必须要有的,显示内容可以是单行或多行,在设定多行时,行与行之间通过回车符(Chr(13))、换行符(Chr( 10 ))或回车换行符的组合 (Chr( 13 ) & Chr( 10 )) 分隔;第二部分:定义信息对话框的组成结构,即图02中的第一、第三和第四部分,Visual Basic .Net提供了一个枚举MsgBoxStyle来分别设定这三个部分。表01、表02和表03分别是这三部分内容所对应的MsgBoxStyle枚举值和说明:
只显示"确定"按钮。
显示"确定"和"取消"按钮。
AbortRetryIgnore
显示"中止"、"重试"和"忽略"按钮。
YesNoCancel
显示"是"、"否"和"取消"按钮。
显示"是"和"否"按钮。
表01:MsgBoxStyle枚举中设定信息对话框中按钮的数目和类型,即图01中第四部分
显示"关键消息"图标。
显示"警告查询"图标。
Exclamation
显示"警告消息"图标。
Information
显示"信息消息"图标。
表02:MsgBoxStyle枚举中设定信息对话框中图标的样式,即图01中第一部分
DefaultButton1
提示框中的第一个按钮是默认焦点按钮。
DefaultButton2
提示框中的第二个按钮是默认焦点按钮。
DefaultButton3
提示框中的第三个按钮是默认焦点按钮。
表03:MsgBoxStyle枚举中设定信息对话框中缺省焦点按钮,即图01中第三部分  MsgBoxStyle中还定义了其他的数值,由于在实际编程使用较少,这里就不介绍了。  定义信息对话框的组成结构,只需按照信息对话框的内容分别选取表01、表02和表03中的数值,但每一张表中至多只能选取一个数值,然后把它们相加就完成了。MsgBox函数参数第二部分并不是必须有的,如果在调用MsgBox函数时没有第二部分参数,则系统会自动设定第二部分数值为"MsgBoxStyle.OKOnly";第三部分:设定信息对话框的标题栏内容,即表01中的第五部分,在MsgBox函数中第三部分是可选的,如果没有设定,则系统会把应用名称放在标题栏。下面是MsgBox的语法结构:
Public Function MsgBox ( _ByVal Prompt As Object , _Optional ByVal Buttons As MsgBoxStyle = MsgBoxStyle.OKOnly , _Optional ByVal Title As Object = Nothing _) As MsgBoxResult
  下面代码的功能是是调用MsgBox函数制作如图01所示信息对话框:
MsgBox ( "请确认操作!" , MsgBoxStyle.Question + MsgBoxStyle.YesNoCancel + MsgBoxStyle.DefaultButton2 , "利用MsgBox函数制作信息对话框" )
  在Visual Basic .Net中系统定义枚举和对应数值是等价的,根据表01、02和03所示数值,也可以把上述代码改换为如下代码:
MsgBox ( "请确认操作!" , 32 + 3 + 256 , "利用MsgBox函数制作信息对话框" )
  四.获取MsgBox函数制作的信息对话框的返回值:  使用MsgBox函数制作的信息对话框,当单击了提示框中的按钮后,MsgBox函数会返回一个常数来确认那个按钮被按动了。表04是按钮和常数之间的对应关系
表04:MsgBox函数的返回值  通过对返回值的判断,就可以确定信息对话框中到底是那个按钮被按动,从而确定程序下一步的运行方式。
五.一个利用MsgBox函数来定制信息对话框的示例:  为了更全面、更具体的掌握MsgBox函数的使用的方法,我们编写了下面示例,下面的示例几乎覆盖了利用MsgBox函数制作信息对话框的所有内容,使用者可以根据要求定制任意形式的信息对话框,并获取使用者在信息对话框中选择的按钮类型。图03是利用下面介绍的示例定制一个信息对话框后的运行界面:图03:利用MsgBox函数来定制信息对话框  下面是此示例的具体实现步骤:  1. 启动Visual Studio .Net。  2. 选择菜单【文件】|【新建】|【项目】后,弹出【新建项目】对话框。  3. 将【项目类型】设置为【Visual Basic项目】。  4. 将【模板】设置为【Windows应用】。  5. 在【名称】文本框中输入【利用MsgBox函数制作提示框】。  6. 在【位置】的文本框中输入【E:\VS.NET项目】,然后单击【确定】按钮,这样在"E:\VS.NET项目"目录中就产生了名称为"利用MsgBox函数制作提示框"的文件夹,并在里面创建了名称为"利用MsgBox函数制作提示框"的项目文件。  7. 把Visual Studio .Net的当前窗口切换到【Form1.vb()】窗口,并从【工具箱】中的【Windows窗体组件】选项卡中按照如下顺序和方法往Form1窗体中拖入下列组件:  三个Label组件。  三个TextBox组件。  三个GroupBox组件,分别是GroupBox1、GroupBox2和GroupBox3。  并在GroupBox1组件中拖入RadioButton1、RadioButton2、RadioButton3和RadioButton4。并在GroupBox2组件中拖入RadioButton5、RadioButton6、RadioButton7、RadioButton8、RadioButton9和RadioButton10。  并在GroupBox3组件中拖入RadioButton12、RadioButton13和RadioButton14。  一个Button组件,名称为Button1。  之后按照表05所示数值来调整组件的主要属性:
利用MsgBox函数制作提示框
MaximizeBox
MinimizeBox
缺省焦点按钮
RadioButton
RadioButton1
RadioButton
RadioButton1
RadioButton2
RadioButton3
RadioButton4
RadioButton5
终止重试忽略
RadioButton6
RadioButton7
RadioButton8
RadioButton9
RadioButton10
RadioButton10
RadioButton12
RadioButton13
RadioButton14
RadioButton14
表05:【利用MsgBox函数制作提示框】项目中组件主要属性设定数值表  在设定完组件中的主要属性值后,再按照图02所示中各组件的位置和排列顺序来调整组件在设计窗体中的位置和排列顺序。  8. 把Visual Basic .Net的当前窗口切换到Form1.vb的代码编辑窗口,并在Form1.vb中的New过程代码区最后部分添加下列代码,下列代码是指定Icon_Click、Button_Click和Default_Click三个过程委托来集中处理RadioButton组件的Click事件:
AddHandler RadioButton1.Click, AddressOf Icon_ClickAddHandler RadioButton2.Click, AddressOf Icon_ClickAddHandler RadioButton3.Click, AddressOf Icon_ClickAddHandler RadioButton4.Click, AddressOf Icon_ClickAddHandler RadioButton5.Click, AddressOf Button_ClickAddHandler RadioButton6.Click, AddressOf Button_ClickAddHandler RadioButton7.Click, AddressOf Button_ClickAddHandler RadioButton8.Click, AddressOf Button_ClickAddHandler RadioButton9.Click, AddressOf Button_ClickAddHandler RadioButton10.Click, AddressOf Button_ClickAddHandler RadioButton12.Click, AddressOf Default_ClickAddHandler RadioButton13.Click, AddressOf Default_ClickAddHandler RadioButton14.Click, AddressOf Default_Click
  9. 在创建Form1窗体的组件的代码区,定义下列变量,下列变量是设定程序中制作的信息对话框缺省的组成元素:
Dim MsgIcon As MsgBoxStyle = MsgBoxStyle.CriticalDim MsgButton As MsgBoxStyle = MsgBoxStyle.OKOnlyDim DefaultButton As MsgBoxStyle = MsgBoxStyle.DefaultButton1
  10. 在Form1.vb中添加Button1组件的Click事件,并在Button1组件的Click事件的代码区添加下列代码:
Dim iResult As Integer = MsgBox ( textBox1.Text , MsgIcon + MsgButton + DefaultButton , textBox2.Text )'显示定制的信息对话框Select Case iResult Case 1  TextBox3.Text = "选择""确定""按钮" Case 2  TextBox3.Text = "选择""取消""按钮" Case 3  TextBox3.Text = "选择""终止""按钮" Case 4  TextBox3.Text = "选择""重试""按钮" Case 5  TextBox3.Text = "选择""忽略""按钮" Case 6  TextBox3.Text = "选择""是""按钮" Case 7  TextBox3.Text = "选择""否""按钮"End Select'处理返回值
  11. 在Form1.vb的Button1组件的Click事件的代码区之后,添加下面代码,下面代码是定义委托过程Icon_Clic,用以集中处理RadioButton1至RadioButton4组件的Click事件,为制作的信息对话框设定显示的图标:
Public Sub Icon_Click ( ByVal sender As Object , ByVal e As System.EventArgs ) Select Case sender.Name  Case "RadioButton1"   MsgIcon = MsgBoxStyle.Critical   '选择提示框图标为"警告"  Case "RadioButton2"   MsgIcon = MsgBoxStyle.Exclamation   '选择提示框图标为"惊叹号"  Case "RadioButton3"   MsgIcon = rmation   '选择提示框图标为信息提示图标"  Case "RadioButton4"   MsgIcon = MsgBoxStyle.Question   '选择提示框图标为"问号" End SelectEnd Sub
  12. 在Form1.vb的Icon_Click委托过程之后,添加下面代码,下面代码是定义委托过程Button_Click,用以集中处理RadioButton5至RadioButton10组件的Click事件,为制作的信息对话框设定按钮的数目和类型:
Public Sub Button_Click ( ByVal sender As Object , ByVal e As System.EventArgs ) Select Case sender.Name  Case "RadioButton5"   MsgButton = MsgBoxStyle.AbortRetryIgnore   '设定信息对话框中的按钮数目为三个:退出、重试和忽略  Case "RadioButton6"   MsgButton = MsgBoxStyle.YesNoCancel   '设定信息对话框中的按钮数目为三个:是、否和取消  Case "RadioButton7"   MsgButton = MsgBoxStyle.YesNo   '设定信息对话框中的按钮数目为二个:是、否  Case "RadioButton8"   MsgButton = MsgBoxStyle.RetryCancel   '设定信息对话框中的按钮数目为二个:重试、取消  Case "RadioButton9"   MsgButton = MsgBoxStyle.OKCancel   '设定信息对话框中的按钮数目为二个:确认、取消  Case "RadioButton10"   MsgButton = MsgBoxStyle.OKOnly   '设定信息对话框中的按钮数目为一个:确认 End SelectEnd Sub
  13. 在Form1.vb的Button_Click委托过程之后,添加下面代码,下面代码是定义委托过程Default_Click,用以集中处理RadioButton12至RadioButton14组件的Click事件,为制作的信息对话框中设置那个是缺省的焦点按钮:
Public Sub Default_Click ( ByVal sender As Object , ByVal e As System.EventArgs ) Select Case sender.Name  Case "RadioButton14"   DefaultButton = MsgBoxStyle.DefaultButton1   '信息对话框中的第一个按钮为缺省焦点按钮  Case "RadioButton13"   DefaultButton = MsgBoxStyle.DefaultButton2   '信息对话框中的第二个按钮为缺省焦点按钮  Case "RadioButton12"   DefaultButton = MsgBoxStyle.DefaultButton3   '信息对话框中的第三个按钮为缺省焦点按钮 End SelectEnd Sub
  至此,在上述步骤都正确完成,并保存后,【利用MsgBox函数制作提示框】项目的全部工作就完成了。图02就是【利用MsgBox函数制作提示框】编译后的运行界面。
六.利用MessageBox类来制作信息对话框:  MessageBox类位于命名空间System.Windows.Forms中,它是一个静态类,所谓静态类,就是不通过创建实例就能够直接使用类中的方法。MessageBox类组成非常简单,其中最为重要的成员就是Show方法,Visual Basic .Net就是通过调用MessageBox类的Show方法来显示信息对话框的。Visual Basic .Net只使用MessageBox类是无法制作各式各样的信息对话框,还需要使用到命名空间System.Windows.Forms定义的若干枚举,这些枚举可以设定信息对话框中的各个元素。.Net 类库把信息对话框中的各个元素进行了细化,这一点不像MsgBox函数中使用的MsgBoxStryle枚举,MsgBoxStryle枚举把按钮的数目、种类、图标、按钮缺省焦点都定义到一起了。而.Net类库中定义了不同的枚举用以定义信息对话框中的各种元素。这些枚举就是:MessageBoxIcon、MessageBoxButtons和MessageBoxDefaultButton枚举。  MessageBoxIcon枚举在MessagBox类中使用主要用以设定信息对话框中的图标类型,在介绍MsgBox函数制作信息对话框时已经介绍,信息对话框中的图标主要是四种,但在MessageBoxIcon枚举中却被设定为多个值,表06是MessageBoxIcon枚举中的成员及其说明:
信息符号图标。
关键符号图标
Exclamation
感叹符号图标。
关键符号图标。
Information
信息符号图标
问号图标。
关键符号图标。
感叹符号图标。
表06:MessageBoxIcon枚举中的成员及其说明  MessageBoxButton枚举在MessageBox类中使用是用来设定信息对话框中的按钮数目和种类,表07是MessageBoxButton枚举的成员及其说明:
AbortRetryIgnore
提示框中包含"中止"、"重试"和"忽略"按钮。
提示框中包含"确定"按钮。
该提示框中包含"确定"和"取消"按钮。
RetryCancel
提示框中包含"重试"和"取消"按钮。
提示框中包含"是"和"否"按钮。
YesNoCancel
提示框中包含"是"、"否"和"取消"按钮。
AbortRetryIgnore
提示框中包含"中止"、"重试"和"忽略"按钮。
表07:MessageBoxButton枚举的成员及其说明  MessageBoxDefaultButton枚举在MessageBox中使用是用来设定信息对话框中的缺省焦点按钮,由于信息对话框中至多只有三个按钮,所以MessageBoxDefaultButton枚举也定义了三个成员,具体如表08所示:
提示框中的第一个按钮是缺省焦点按钮。
提示框中的第二个按钮是缺省焦点按钮。
提示框中的第三个按钮是缺省焦点按钮。
表08:MessageBoxDefaultButton枚举的成员及其说明  MessageBox类中有很多重载Show方法,下面是最为常用的一种重载Show方法的语法格式:
Overloads Public Shared Function Show (ByVal text As String ,ByVal caption As String , _ByVal buttons As MessageBoxButtons ,ByVal icon As MessageBoxIcon ,ByVal defaultButton As MessageBoxDefaultButton ) As DialogResult
  参数说明:  text 必选,提示框中显示的内容。&  caption 可选,提示框标题栏中显示的文本。&  buttons 可选,MessageBoxButtons值之一,设定提示框中的按钮数目和类型。&  icon 可选,MessageBoxIcon值之一,设定提示框中显示的图标类型。&  defaultButton 可选,MessageBoxDefaultButton值之一,设定提示框缺省焦点按钮。&  返回值 DialogResult值之一。  下面代码的功能是用MessageBox类的Show方法制作如图01所示提示框:
MessageBox.Show ( "请确认操作!" , "利用MsgBox函数制作信息对话框", MessageBoxButtons.YesNoCancel , MessageBoxIcon.Question , MessageBoxDefaultButton.Button2 )
  七.获取MessageBox类制作的信息对话框的返回值:  同样在使用MessageBox类制作的信息对话框中的某个按钮被按动后,Show方法也会返回一个数值,这个数值是DialogResult枚举中定义的一个值,通过对这个DialogResult值进行判断,从而得到信息对话框中是那个按钮被按动,表09是DialogResult枚举中的成员及其说明:
按动提示框中的"终止"按钮。
按动提示框中的"取消"按钮。
按动提示框中的"忽略"按钮。
按动提示框中的"否"按钮。
无返回值。
按动提示框中的"确定"按钮。
按动提示框中的"重试"按钮。
按动提示框中的"是"按钮。
表09:DialogResult枚举中的成员及其说明  下列代码的功能是制作图01所示信息对话框,并通过比较DialogResult枚举中的数值来判断按动了提示框中哪个按钮:
Dim drResult = New DialogResult ( )&'定义一个DialogResult枚举数值drResult = MessageBox.Show ( "请确认操作!", "利用MsgBox函数制作信息对话框", MessageBoxButtons.YesNoCancel , MessageBoxIcon.Question , MessageBoxDefaultButton.Button2 )Select Case drResult Case DialogResult.Yes  MessageBox.Show ( "选择""确定""按钮" ) Case DialogResult.Cancel  MessageBox.Show ( "选择""取消""按钮" ) Case DialogResult.No  MessageBox.Show ( "选择""否""按钮" )End Select'判断选择提示框中了那个按钮
  八.总结:  至此在Visual Basic .Net中制作二种类型提示对话框就介绍完了,Visual Basic .Net是通过InputBox函数来制作输入对话框,这种对话框结构比较单一,相对简单。而信息对话框在Visual Basic .Net中却可通过二种不同的方法实现,一种是继承原Visual Basic 6.0中的MsgBox函数,另外是通过.Net FrameWork SDK中的MessageBox类,虽然这二种方法所使用的东西各不相同,但具体的实现方法和步骤却非常雷同。我想通过以上介绍,各位一定可以实现用MessageBox类来替代【利用MsgBox函数制作提示框】项目中的MsgBox函数,实现用MessageBox类来定制各种信息提示框的工作。
阅读(...) 评论()}

我要回帖

更多关于 非模态对话框创建 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信