Visual Basic 6.0 控制項和 .NET 控制項的區別(續)

來源:互聯網
上載者:User
visual|控制項|區別 圖 1:典型的資料輸入螢幕

如圖 1 所示,在用鍵盤鍵入資料的輸入表單上,您可能希望使 Add、Update、Delete 和 Clear 按鈕保持在表單的右下角。要實現此目的,請反白這些按鈕,然後將 Anchor 屬性設定為 BottomRight。要執行此操作,請在 Properties 視窗中找到 Anchor 屬性,並單擊其下拉式箭頭。清除選擇左邊和上邊的欄,然後選擇右邊和下邊的欄,如圖 2 所示。



圖 2:已啟用 Anchor 下拉式清單的 Properties 對話方塊

使用 Anchor 屬性,您不必編寫任何程式碼就能將控制項錨定在表單的任何邊。通過選擇圖形化菜單中的選項,您可以選擇所需的操作。在代碼中,可以使用諸如 TopLeft、BottomRight、Left、Right、Top、Bottom、TopLeftBottom 和 All 等常量來設定屬性值。

靠接
Dock 屬性類似於 Anchor 屬性,使您可以將控制項靠接到容器的任何邊。靠接控制項時,控制項將隨表單的縮放而縮放,但其靠接的邊保持不變,如果將控制項靠接在表單的所有邊,則控制項將充滿整個表單。

關於控制項數組
在 Visual Basic 6.0 中,將所有控制項的 Name 屬性設定為相同的值便可以建立控制項數組。隨後,每個控制項的 Index 屬性會被設定為不同的編號。Index 值被傳遞給該組控制項的任意事件,這樣您就可以知道哪個控制項調用了該事件。這是 Visual Basic 6.0 中控制項數組的用途之一,即一個事件程序處理多個控制項的代碼。

而在 Visual Basic .NET 中,處理控制項數組的方式則大不一樣。實現一個過程處理多個控制項的事件的方法有兩種:使用內嵌於 .NET 類中的 AddHandler 過程,或在過程中使用 Handles 子句。

如果您只希望編寫一個 Click 事件,使表單底部的所有按鈕都具備該事件,您可以雙擊其中一個按鈕,使代碼視窗產生一個 Click 事件程序。此過程的代碼如下:

Private Sub btnSave_Click( _
ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles btnSave.Click, btnNew.Click, btnDelete.Click
    MessageBox.Show("Click 事件")
End Sub
儘管以上代碼很簡單,但它說明了不同控制項如何調用同一過程。除了建立控制項數組,您還可以通過建立並指定事件處理常式來響應多個控制項的一個或多個事件。

除了 Handles 子句,您還可以使用 AddHandler 語句實現一個過程處理多個控制項的事件。該語句使您可以向任何事件添加事件處理常式,並指定要調用的過程。由於可以向事件添加事件處理常式,您可以使用一系列事件處理常式來處理相同的事件,實際上是在告訴控制項應該調用哪個過程來響應事件。因為是委託事件處理常式來處理這一新過程,所以此過程稱為“代理”。

要使代理生效,請在表單的 New 方法中現有代碼的 TODO 注釋下面添加類似下面的代碼:

AddHandler btnDelete.Click, AddressOf ButtonClick

AddHandler btnNew.Click, AddressOf ButtonClick

完成上述代碼的添加後,如果單擊 New、Delete、或 Save 按鈕,則會調用 ButtonClick 事件程序。當然,您可能需要確定調用此特殊事件程序的按鈕。要做到這一點,您可以使用傳遞給所有事件程序的 sender 參數,它是產生該特殊事件的對象。因此您可以編寫如下代碼:

Private Sub ButtonClick( _
ByVal sender As Object, _
ByVal e As System.EventArgs)
    If sender Is btnNew Then
       MessageBox.Show("已按下 New 按鈕")
    ElseIf sender Is btnSave Then
       MessageBox.Show("已按下 Save 按鈕")
    ElseIf sender Is btnDelete Then
       MessageBox.Show("已按下 Delete 按鈕")
    End If
End Sub
這兩種建立數組的方法沒有本質區別,您可以任意選擇一種。

預設和取消按鈕
在舊版本的 Visual Basic 中,需要將 CommandButton 控制項的 Default 屬性設定為 True,以告訴 Visual Basic 當按下 Enter 鍵時應該調用此按鈕的 Click 事件;設定另一個 CommandButton 控制項的 Cancel 屬性,以告訴 Visual Basic 當按下 Esc 鍵時應該調用此按鈕的 Click 事件;然後還必須為上述每個 Click 事件程序編寫代碼以關閉表單,並且很可能需要設定屬性,告訴調用此表單的常式按下的是哪個按鈕。

現在,無需為這些按鈕編寫任何代碼即可實現此目的,使用者只需將每個按鈕的 DialogResult 屬性設定為特定的值。例如,如果表單上包含“確定”和“取消”按鈕,請將這兩個按鈕的 DialogResult 屬性分別設定為 OK 和 Cancel。然後將表單的 AcceptButton 屬性設定為“確定”按鈕,將表單的 CancelButton 屬性設定為“取消”按鈕。

完成這些屬性的設定後,便可以使用 ShowDialog 方法顯示表單,而且兩個按鈕都可以自動關閉表單。然後,表單的 DialogResult 屬性會被設定為在按下的按鈕中設定的 DialogResult 值。這樣,就可以從調用程式內部確定關閉表單的按鈕。

內容相關性功能表
在 Windows 應用程式中,您可能需要為控制項指定特殊菜單,以在使用滑鼠右鍵單擊該控制項時顯示該菜單。要在 Visual Basic 6.0 中實現這一功能,您需要將已建立的菜單的 Visible 屬性設定為 False,然後在該控制項的 Click 事件程序中編寫代碼,以顯示隱藏的菜單。

在 .NET 中,您可以使用 ContextMenu 屬性建立與表單的 MainMenu 完全分開的菜單。您只需設定控制項的 ContextMenu 屬性,就可以將此菜單指定給該控制項,而不必另外編寫任何代碼。

在表單上鎖定控制項
建立使用者介面後,您需要確保在單擊控制項添加代碼時不會意外地行動控制項。Visual Basic 6.0 中有一個選項可以鎖定表單上的所有控制項。該選項非常好用,但有時仍需要在大型表單上處理一小部分內容,這時候就會產生問題。為了處理這一小部分內容,您必須取消所有控制項的鎖定,這樣就有可能不小心行動控制項。

在 .NET 中,可以將控制項分組鎖定或單獨鎖定,這在大型表單上處理多組控制項時非常有用。

MDI 表單上的控制項
在 Visual Basic 6.0 中,只有那些具有 Align 屬性的控制項才能放置到 MDI 表單上;而在 .NET 中,您可以將任何控制項放置到 MDI 表單上。

DDE 已被刪除
在 .NET 語言中,動態資料交換 (DDE) 技術已不再可用。在 .NET 中,程式之間的通訊方法很多,不再需要此技術,因此,所有控制項中具有 Link 首碼的所有屬性均已被刪除。

標準控制項的變化
本文前面提到過,很多標準控制項的屬性都發生了變化。下面是已改變的屬性或已添加到每個不同標準控制項中的屬性。下表列出的區別僅限於這些控制項的特定屬性,前面提到過的公用屬性也有變化,在此不再贅述。

標籤控制項

新屬性 說明
Text 此屬性在 Visual Basic 6.0 中稱為 Caption。

文字框控制項

新屬性 說明
AcceptsReturn 如果設定為 True,則多行文字框會將 CRLF 當作有效字元。要禁止在文字框中輸入 CRLF,請將此屬性設定為 False。
AcceptsTab 如果設定為 True,則多行文字框會將定位字元當作有效字元。要禁止在文字框中輸入定位字元,請將此屬性設定為 False。
CharacterCasing 控制使用者在此控制項中鍵入的字母的大小寫。選項包括 Normal、UpperCase 和 LowerCase。
ReadOnly 如果要禁止使用者在此文字框中輸入文本,請將此屬性設定為 True。此屬性與原來的 Locked 屬性功能相同。
TextAlign 當使用者在文本地區鍵入資料時,此屬性控制文本的對齊。可將此屬性設定為 Left、Right 或 Center。



按鈕控制項

新屬性 說明
BackgroundImage 允許在按鈕上設定背景映像,還可以在映像上添加文本。
DialogResult 當將表單作為對話方塊調用時,設定返回結果。如果使用者按下此按鈕,將返回此屬性中的值。
FlatStyle 改變按鈕的外觀。選項包括 Flat、PopUp、Standard 和 System。如果使用 Windows XP,則應該選擇 System,因為此選項允許您使用 XP 主題。
Image 在此按鈕中顯示的映像。
ImageAlign 按鈕中映像的置放位置。
ImageIndex ImageList 控制項(在 ImageList 屬性中設定)中映像的索引號。
ImageList ImageList 控制項的名稱,在此控制項中使用 ImageIndex 屬性檢索映像。
Text 此屬性在 Visual Basic 6.0 中稱為 Caption。
TextAlign 控制按鈕上顯示的文本的對齊。選項包括 left、right、center、middle、top 或 bottom,或任何上述選項的組合。


複選框控制項

新屬性 說明
AutoCheck 如果設定為 True,則單擊控制項的任意位置,其狀態都會從選中變為取消選中。
BackgroundImage 允許在複選框控制項上設定背景映像,還可以在映像上添加文本。
CheckAlign 確定複選框控制項的位置。Visual Basic 6.0 將文本的位置限制在複選框內的左側或右側。現在,您可以選擇 left、right、up、down 或 center。
Checked True=選中,False=取消選中。
CheckState 此屬性允許使用者在設計時設定三種狀態,以指明在運行時希望該控制項顯示的內容。可以選擇 Checked、Unchecked 或 Indeterminate。注意:只有在將 ThreeState 屬性設定為 True 時,才能設定 Indeterminate 選項。
FlatStyle 改變複選框控制項的外觀。選項包括 Flat、PopUp、Standard 和 System。
Image 在複選框中顯示的映像。
ImageAlign 複選框中映像的置放位置。
ImageIndex ImageList 控制項(在 ImageList 屬性中設定)中映像的索引號。
ImageList ImageList 控制項的名稱,在此控制項中使用 ImageIndex 屬性檢索映像。
Text 此屬性在 Visual Basic 6.0 中稱為 Caption。
ThreeState 如果此屬性設定為 True,則可以將 CheckState 屬性設定為 Indeterminate,同時它還允許使用者在 Checked、Unchecked 和 Indeterminate 三種狀態間切換。


選項按鈕控制項

新屬性 說明
AutoCheck 如果設定為 True,則單擊該控制項的任意位置,其狀態將從選中變為取消選中。
BackgroundImage 允許在選項按鈕上設定背景映像,還可以在映像上添加文本。
CheckAlign 確定選項按鈕中選中標記的位置。在 Visual Basic 6.0 中,只能將其放在文本的左側或右側。而在 .NET 中,您可以選擇 left、right、up、down 或 center。
Checked 此屬性在 Visual Basic 6.0 中稱為 Value。
FlatStyle 改變選項按鈕控制項的外觀。選項包括 Flat、PopUp、Standard 和 System。
Image 在選項按鈕中顯示的映像。
ImageAlign 選項按鈕中映像的置放位置。
ImageIndex ImageList 控制項(在 ImageList 屬性中設定)中映像的索引號。
ImageList ImageList 控制項的名稱,在此控制項中使用 ImageIndex 屬性檢索映像。
Text 此屬性在 Visual Basic 6.0 中稱為 Caption。
TextAlign 控制選項按鈕上顯示的文本的對齊。可將此屬性設定為 left、right、center、middle、top 或 bottom,或上述任何選項的組合。


下拉式方塊控制項

新屬性 說明
DisplayMember 在控制項的列表部分顯示從每一對象載入到 ComboBox 中的項。DisplayMember 的預設值是 ToString 方法。
DropDownStyle 此屬性在 Visual Basic 6.0 中稱為 Style。與在 Visual Basic 6.0 中一樣,您可以選擇 Simple、DropDownList 和 DropDown。
DropDownWidth 組合框下拉部分的寬度(以像素計算)。可以不同於表單上組合框的實際尺寸。
MaxDropDownItems 使用者使用組合框的下拉部分時允許顯示的項數。
MaxLength 將 DropDownStyle 屬性設定為 Simple 時,可以輸入的最大字元數。
ValueMember 從選定項中檢索資料。預設值為 ToString 方法。


列表框控制項

新屬性 說明
ColumnWidth 將 MultiColumn 屬性設定為 True 時各列的寬度。
DisplayMember 在控制項的列表部分顯示從每一對象載入到 ListBox 中的項。DisplayMember 的預設值是 ToString 方法。
HorizontalExtent 如果將 HorizontalScrollbar 屬性設定為 True,則可以在此屬性中輸入一個數字,表示捲軸可以滾動的最大寬度(以像素計算)。
HorizontalScrollbar 如果不想在資料的寬度大於此方框時顯示水平捲軸,請將該屬性設定為 False。
ItemHeight 使用固定字型時列表框中各項的高度。
Items 代替 Visual Basic 6.0 ListBox 控制項的 List 屬性。
MultiColumn 代替 Visual Basic 6.0 中的 Columns 屬性。如果希望顯示多行,請將此值設定為 True。
ScrollAlwaysVisible 如果希望在資料量很少時仍顯示捲軸,請將此屬性設定為 True。這有助於使用者根據此列表框中可能輸入的資料確定列表框的適當寬度。如果在運行時載入資料後,可以看到捲軸,最好能夠在資料太大時正確設定控制項的寬度。
SelectionMode 代替 Visual Basic 6.0 中的 MultiSelect 屬性。
UseTabStop 如果不希望 Tab 字元在列表框中代表不同的列,請將此屬性設定為 False。
ValueMember 從選定項中檢索資料。預設值為 ToString 方法。


圖片框控制項

新屬性 說明
BackgroundImage 允許在圖片框上設定背景映像,還可以在映像上添加文本。
BorderStyle 包括 None、Fixed 和 Fixed3D 選項。
Image 用於代替 Picture 屬性。
SizeMode 控製圖片的顯示方式。可以選擇的值包括 Normal、StretchImage、AutoSize 和 CenterImage。


HScrollBar 控制項

新屬性 說明
Maximum 代替 Visual Basic 6.0 中的 Max 屬性。
Minimum 代替 Visual Basic 6.0 中的 Min 屬性。


VScrollBar 控制項

屬性 說明
Maximum 代替 Visual Basic 6.0 中的 Max 屬性。
Minimum 代替 Visual Basic 6.0 中的 Min 屬性。


其他控制項
除了 Visual Basic 6.0 中的標準控制項外,Visual Basic .NET 中還升級了許多其他控制項。實際上,升級的控制項非常多,每個控制項都可以單獨寫一篇文章。瞭解本文列出的變化後,對以後在 .NET 中使用這些新控制項時遇到的變化類型就會有一個清楚的認識。

總結
在 .NET 中建立使用者介面的方式已經發生了很大的變化。您以前使用過的一些控制項已經不複存在,或者變得與原來大不一樣。要執行特定的操作,您需要使用這些新屬性,有時還必須使用系統類別來代替控制項。您會發現 .NET 控制項相對於原來的 ActiveX 控制項有了相當大的改進。使用這些新屬性和新方法,可以協助您開發出更好的 Windows 應用程式。


相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。