深入淺出VB.NET提示對話框


 

  一.輸入對話框:

  制作輸入對話框相對信息提示框來相對簡單,在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 String
Dim myValue As Object
message = "請輸入數值,數值在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枚舉值和說明:

枚舉 數值 說明
OKOnly 0 只顯示"確定"按鈕。
OKCancel 1 顯示"確定"和"取消"按鈕。
AbortRetryIgnore 2 顯示"中止"、"重試"和"忽略"按鈕。
YesNoCancel 3 顯示"是"、"否"和"取消"按鈕。
YesNo 4 顯示"是"和"否"按鈕。

表01:MsgBoxStyle枚舉中設定信息對話框中按鈕的數目和類型,即圖01中第四部分

枚舉 數值 說明
Critical 16 顯示"關鍵消息"圖標。
Question 32 顯示"警告查詢"圖標。
Exclamation 48 顯示"警告消息"圖標。
Information 64 顯示"信息消息"圖標。

表02:MsgBoxStyle枚舉中設定信息對話框中圖標的樣式,即圖01中第一部分

枚舉 數值 說明
DefaultButton1 0 提示框中的第一個按鈕是默認焦點按鈕。
DefaultButton2 256 提示框中的第二個按鈕是默認焦點按鈕。
DefaultButton3 512 提示框中的第三個按鈕是默認焦點按鈕。

表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是按鈕和常數之間的對應關系

常數 數值
確定 1
取消 2
退出 3
重試 4
忽略 5
6
7

表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所示數值來調整組件的主要屬性:

組件類型 組件名稱 屬性 設置結果
Form Form1 Text 利用MsgBox函數制作提示框
MaximizeBox False
MinimizeBox False
GroupBox GroupBox1 Text 顯示圖標
GroupBox GroupBox2 Text 顯示按鈕
GroupBox GroupBox3 Text 缺省焦點按鈕
RadioButton RadioButton1 Text 關鍵符號
RadioButton RadioButton1 Checked True
  RadioButton2 Text 驚嘆符號
  RadioButton3 Text 信息符號
  RadioButton4 Text 問號
  RadioButton5 Text 終止重試忽略
  RadioButton6 Text 是否取消
  RadioButton7 Text 是否
  RadioButton8 Text 重試取消
  RadioButton9 Text 確定取消
  RadioButton10 Checked True
  RadioButton10 Text 確定
  RadioButton12 Text 第三按鈕
  RadioButton13 Text 第二按鈕
  RadioButton14 Text 替換
  RadioButton14 Checked True
TextBox TextBox1 Text  
  TextBox2 Text  
  TextBox3 Text  



表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_Click
AddHandler RadioButton2.Click, AddressOf Icon_Click
AddHandler RadioButton3.Click, AddressOf Icon_Click
AddHandler RadioButton4.Click, AddressOf Icon_Click

AddHandler RadioButton5.Click, AddressOf Button_Click
AddHandler RadioButton6.Click, AddressOf Button_Click
AddHandler RadioButton7.Click, AddressOf Button_Click
AddHandler RadioButton8.Click, AddressOf Button_Click
AddHandler RadioButton9.Click, AddressOf Button_Click
AddHandler RadioButton10.Click, AddressOf Button_Click

AddHandler RadioButton12.Click, AddressOf Default_Click
AddHandler RadioButton13.Click, AddressOf Default_Click
AddHandler RadioButton14.Click, AddressOf Default_Click


  9. 在創建Form1窗體的組件的代碼區,定義下列變量,下列變量是設定程序中制作的信息對話框缺省的組成元素:

Dim MsgIcon As MsgBoxStyle = MsgBoxStyle.Critical
Dim MsgButton As MsgBoxStyle = MsgBoxStyle.OKOnly
Dim 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 = MsgBoxStyle.Information
   '選擇提示框圖標為信息提示圖標"
  Case "RadioButton4"
   MsgIcon = MsgBoxStyle.Question
   '選擇提示框圖標為"問號"
 End Select
End 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 Select
End 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 Select
End 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枚舉中的成員及其說明:

成員名稱 說明
Asterisk 信息符號圖標。
Error 關鍵符號圖標
Exclamation 感嘆符號圖標。
Hand 關鍵符號圖標。
Information 信息符號圖標
None 無圖標。
Question 問號圖標。
Stop 關鍵符號圖標。
Warning 感嘆符號圖標。

表06:MessageBoxIcon枚舉中的成員及其說明

  MessageBoxButton枚舉在MessageBox類中使用是用來設定信息對話框中的按鈕數目和種類,表07是MessageBoxButton枚舉的成員及其說明:

成員名稱 說明
AbortRetryIgnore 提示框中包含"中止"、"重試"和"忽略"按鈕。
OK 提示框中包含"確定"按鈕。
OKCancel 該提示框中包含"確定"和"取消"按鈕。
RetryCancel 提示框中包含"重試"和"取消"按鈕。
YesNo 提示框中包含"是"和"否"按鈕。
YesNoCancel 提示框中包含"是"、"否"和"取消"按鈕。
AbortRetryIgnore 提示框中包含"中止"、"重試"和"忽略"按鈕。

表07:MessageBoxButton枚舉的成員及其說明

  MessageBoxDefaultButton枚舉在MessageBox中使用是用來設定信息對話框中的缺省焦點按鈕,由於信息對話框中至多只有三個按鈕,所以MessageBoxDefaultButton枚舉也定義了三個成員,具體如表08所示:

成員名稱 說明
Button1 提示框中的第一個按鈕是缺省焦點按鈕。
Button2 提示框中的第二個按鈕是缺省焦點按鈕。
Button3 提示框中的第三個按鈕是缺省焦點按鈕。

表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枚舉中的成員及其說明:

成員名稱 說明
Abort 按動提示框中的"終止"按鈕。
Cancel 按動提示框中的"取消"按鈕。
Ignore 按動提示框中的"忽略"按鈕。
No 按動提示框中的"否"按鈕。
None 無返回值。
OK 按動提示框中的"確定"按鈕。
Retry 按動提示框中的"重試"按鈕。
Yes 按動提示框中的"是"按鈕。

表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類來定制各種信息提示框的工作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM