top
Loading...
一步一步創建VisualBasic.NET控件
摘要:本月 Billy Hollis 將向您介紹如何從頭創建可呈現其特有界面的可視控件。

我從來沒有真正想過要當一名 C++ 程序員,因為我太懶了,不能那么辛苦地工作。但我必須承認,我過去常常嫉妒那些 C++ 程序員,嫉妒他們編寫可視控件的能力。

Visual Basic® 6.0 及其早期版本中的控件僅限于“復合”控件(由其他控件組成的控件),這種控件稱為 UserControl。在 Visual Basic 6.0 中編寫能夠在屏幕上呈現其特有可視外觀的控件幾乎是不可能的。

現在好了,可以使用功能強大的 Visual Basic .NET 編寫各種類型的可視控件了!不僅可以編寫復合的 UserControl,還能繼承現有的控件(如 TextBox)并擴展其新功能。更重要的是,還可以從頭編寫能夠呈現其特有界面的可視控件。

在本文中,我將從頭創建一個完整的可視控件,以說明 Visual Basic .NET 的后一種功能。該控件是一個“紅綠燈”- 一個包含三個圓(分別代表紅、黃、綠三個燈)的矩形。圖 1 顯示各個燈亮時該控件的外觀,控件的背景顏色設置為系統顏色 ControlDark

圖 1:帶有三個 TrafficLight 控件的窗體,每個控件亮不同的燈。

我們稱它為 TrafficLight 控件,它可以通過代碼或讓用戶單擊燈來改變亮起的燈。

因為 TrafficLight 是一個可視的 Windows 窗體控件,它將繼承 System.Windows.Forms 命名空間中的 Control 類。這樣,它將具有很多預定義的屬性、方法和事件,包括控制其外觀的屬性,如 ForeColorBackColorSizeLocation;還包括事件,如 MouseOverClick。您可以查看 .NET 文檔,獲得 Control 類成員的完整列表。

紅綠燈也需要具有特殊的屬性和事件,如下所示:

Status 屬性確定亮起哪種顏色的燈。必須為以下三個枚舉值之一:
  • StatusRed:紅燈亮
  • StatusYellow:黃燈亮
  • StatusGreen:綠燈亮
BorderWidth 屬性紅綠燈周圍邊框的寬度。
StatusChanged 事件當通過代碼或由用戶單擊不同的燈改變 Status 屬性的值時,觸發該事件。

由于這些成員不屬于 Control 基類,所以我們需要包括完整的代碼以處理它們。我們還需要繪制邊框和三個相應顏色的燈的代碼,以便在屏幕上繪制紅綠燈。最后,我們需要處理用戶單擊圓以更改亮起燈的操作,并在更改亮起的燈時更改 Status 屬性。

為了使本示例盡可能接近實際應用環境,我們還將包括能夠確保在 Visual Studio® .NET IDE 中更好地使用控件的代碼。我們為工具箱設置適當的圖標,并包括能夠使屬性更好地與各屬性窗口集成的邏輯。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗