新聞中心
vb.net 怎樣創(chuàng)建控件數(shù)組?
Dim Str(20) As String '20數(shù)據(jù)元素
站在用戶的角度思考問題,與客戶深入溝通,找到瀍河網(wǎng)站設計與瀍河網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站制作、成都外貿網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、主機域名、虛擬空間、企業(yè)郵箱。業(yè)務覆蓋瀍河地區(qū)。
Dim Text(20) As TextBox
Dim n As Integer = 0
For Each i In Text
i = New TextBox '實例化
i.Location = New Point(50, n * 20)
Me.Controls.Add(i) '添加窗體
Dim Index As Integer = i.TabIndex '沒index屬性
Str(n) = Index
i.Text = Str(n) 'str數(shù)組值賦值給文本框
n += 1
Next
VB 什么是控件數(shù)組,它有什么優(yōu)點?
Visual Basic(VB)是由微軟公司開發(fā)的包含環(huán)境的事件驅動編程語言。
它源自于BASIC編程語言。VB擁有圖形用戶界面(GUI)和快速應用程序開發(fā)(RAD)系統(tǒng),可以輕易的使用DAO、RDO、ADO連接數(shù)據(jù)庫,或者輕松的創(chuàng)建ActiveX控件。程序員可以輕松地使用VB提供的組件快速創(chuàng)建一個應用程序。
語言優(yōu)點
VB的中心思想就是要便于程序員使用,無論是新手或者專家。VB使用了可以簡單創(chuàng)建應用程序的GUI系統(tǒng),但是又可以開發(fā)相當復雜的程序。VB的程序是一種基于窗體的可視化組件安排的聯(lián)合,并且增加代碼來指定組建的屬性和方法。
因為默認的屬性和方法已經(jīng)有一部分定義在了組件內,所以程序員不用寫多少代碼就可以完成一個簡單的程序。過去的版本里面VB程序的性能問題一直被放在臺面上討論,但是隨著計算機速度的飛速增加,關于性能的爭論已經(jīng)越來越少。
窗體控件的增加和改變可以用拖放技術實現(xiàn)。一個排列滿控件的工具箱用來顯示可用控件(比如文本框或者按鈕)。每個控件都有自己的屬性和事件。默認的屬性值會在控件創(chuàng)建的時候提供,但是程序員也可以進行更改。很多的屬性值可以在運行時候隨著用戶的動作和修改進行改動,這樣就形成了一個動態(tài)的程序。
舉個例子來說:窗體的大小改變事件中加入了可以改變控件位置的代碼,在運行時候每當用戶更改窗口大小,控件也會隨之改變位置。在文本框中的文字改變事件中加入相應的代碼,程序就能夠在文字輸入的時候自動翻譯或者阻止某些字符的輸入。
VB的程序可以包含一個或多個窗體,或者是一個主窗體和多個子窗體,類似于操作系統(tǒng)的樣子。有很少功能的對話框窗口(比如沒有最大化和最小化按鈕的窗體)可以用來提供彈出功能。
VB的組件既可以擁有用戶界面,也可以沒有。這樣一來服務器端程序就可以處理增加的模塊。
VB使用引用計數(shù)的方法來進行垃圾收集,這個方法中包含有大量的對象,提供基本的面向對象支持。
因為越來越多組建的出現(xiàn),程序員可以選用自己需要的擴展庫。和有些語言不一樣,VB對大小寫不敏感,但是能自動轉換關鍵詞到標準的大小寫狀態(tài),以及強制使得符號表入口的實體的變量名稱遵循書寫規(guī)則。默認情況下字符串的比較是對大小寫敏感的,但是可以關閉這個功能。
VB使得大量的外界控件有了自己的生存空間。大量的第三方控件針對VB提供。VB也提供了創(chuàng)建、使用和重用這些控件的方法,但是由于語言問題,從一個應用程序創(chuàng)建另外一個并不簡單。
擴展資料:
術語
在討論Visual Basic(不包含.NET)時,經(jīng)??梢月牭揭韵逻@些術語,因此掌握這些術語的基本理解對初學者十分有幫助。
1、? 控件:簡單的說,控件就是構成或者說建造Visual Basic應用程序的圖形化工具,包括窗體、按鈕、復選框、列表框、數(shù)據(jù)控件、表格控件和圖片控件等等。
2、? 事件:由用戶或操作系統(tǒng)引發(fā)的動作,例如擊鍵、單擊鼠標(Click)、雙擊鼠標(DblClick)、一段時間的限制,或從端口接收數(shù)據(jù)。
3、 方法:嵌入在對象定義中的程序代碼,它定義對象怎樣處理信息并響應某事件。例如,數(shù)據(jù)庫對象有打開紀錄集并從一個記錄移動到另一個記錄的方法程序的基本元素,它含有定義其特征的屬性,定義其任務和識別它可以響應的事件的方法。控件和窗體是Visual Basic中所有對象的示例。
4、? 對象:一個控件、窗體等都可被看作一個對象。
5、 過程:為完成某些特定的任務而編寫的代碼段,過程通常用于響應特定的事件,也可以當作應用程序的用戶自定義函數(shù)來使用。
6、? 屬性:屬性是組成用戶界面的各對象的性質的具體描述。例如上述“對象”中所提到的尺寸、位置、顏色、寬度、高度等等都稱為控件的屬性。
屬性決定對象的外觀,有時也決定對象的行為。對象的屬性絕大部分是VB中已經(jīng)事先定義好的,但也有的屬性是需要在應用過程中才去定義的。屬性即可為對象提供數(shù)據(jù),也能從對象取回信息。
vb.net如何使用控件數(shù)組,希望可以用label為例
vb.net和vb6.0不同,無法直接使用控件數(shù)組。不過可以通過其他方式變通一下。
比如現(xiàn)在有10個label,要將這10個label的text屬性統(tǒng)一設置為“這是第X個標簽”(X為1-10)。
1.建立10個label,名稱分別為label1、label2、label3。。label10
2.代碼:
For i = 1 To 10
Me.FindControl("label" i).Text = "這是第" i “個標簽”
Next i
關鍵點是Me.FindControl()的方法,在代碼中Me.FindControl("label1").text與label1.text是一樣的。
vb中控件數(shù)組的類型可以不同
可以不同。
開發(fā)人員在 Visual Basic 6.0 以及更早的版本中使用控件數(shù)組主要有以下三個理由:
1. 在循環(huán)中訪問數(shù)組中控件的屬性。
2. 向窗體動態(tài)添加新控件。
3. 允許一個事件例程與多個控件連接 。
控件數(shù)組的使用,極大的方便了開發(fā)人員。然而,剛剛從Visual Basic6.0(以下簡稱VB6.0)過渡到Visual Basic.Net(以下簡稱VB.NET)的初學者卻發(fā)現(xiàn),在VB.NET中似乎不能使用控件數(shù)組了。筆者仔細查閱了VB.NET的MSDN文檔發(fā)現(xiàn),在 VB.NET 中,確實不再支持控件數(shù)組。原因是,VB.NET對事件模型作了很大的改動,引入了另外一種數(shù)據(jù)類型――控件集合模型,使控件數(shù)組沒有存在的必要。就像 VB6.0 中的控件數(shù)組可以共享事件一樣,VB.NET 中的事件模型允許任何事件處理程序都可以處理來自多個控件的事件,這就允許創(chuàng)建屬于不同類型但共享相同事件的控件組。
在VB.net里定義的控件數(shù)組怎么定義事件
Imports?System.Text
Imports?System.Windows
Imports?System.Windows.Forms
Public?Class?Netin?'類?名
'Inherits?Forms.Form
Public?Shared?Netin?As?New?Form
Public?components?As?ComponentModel.IContainer
Protected?Overrides?Sub?Finalize()
MyBase.Finalize()
End?Sub???
DebuggerStepThrough()
Public?Sub?InitializeComponent()
Me.components?=?New?ComponentModel.Container()
Dim?resources?As?ComponentModel.ComponentResourceManager?=?New?System.ComponentModel.ComponentResourceManager(GetType(bjt))
Me.TextBox1?=?New?TextBox(Me.components)
Me.Button1?=?New?Button(Me.components)
'For?…?Next??
Me.Controls.Add(Me.TextBox1)
Me.Controls.Add(Me.Button1)
Me.m?=?New?ContextMenuStrip(Me.components)
Me.m1.Text?=?"菜單項1"?????
'設置并添加相關控件,(窗體)Netin?初始化。
End?Sub
Private?Sub?Form_Load(sender?As?Object,?e?As?EventArgs)?Handles?Me.Load
'加載后顯示窗體Netin。
End?Sub
Public?Sub?ObjClick(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click,Button2.Click,Button3.Click,TextBox1.Click?
MessageBox.Show("你按了鼠標")
End?Sub
Public?WithEvents?TextBox1?As?TextBox
Public?WithEvents?Button1?As?Button
Public?WithEvents?Button2?As?Button
Public?WithEvents?Button3?As?Button
Friend?WithEvents?m?As?ContextMenuStrip
Friend?WithEvents?m1?As?ToolStripMenuItem
End?Class
Class?MainWindow
Netin.Show()
Netin.Button2.Text?=?"Main"
……
vb.net有沒有類似vb6.0控件數(shù)組的功能
可以實現(xiàn)
首先創(chuàng)建一個Button類型控件數(shù)組:
1、創(chuàng)建“Windows應用程序”類型的工程,添加名為ButtonArray的類,并使該類繼承 System.Collection.CollectionBase 類。System.Collections.CollectionBase類是.NET框架類庫中為集合操作提供抽象的基類,通過對它的繼承可以為我們的ButtonArray類具備集合增加、刪除、索引的功能。
2、為ButtonArray類添加ParentForm屬性,即控件組所在窗體,創(chuàng)建初始化函數(shù)(構造函數(shù));
3、為控件數(shù)組類增加AddItem方法,該方法在控件數(shù)組類中添加成員;
4、為控件數(shù)組類增加RemoveItem方法,該方法在控件數(shù)組中刪除一個成員。
示例代碼:
Public Class ButtonArray
Inherits System.Collections.CollectionBase
Private ReadOnly ParentForm As System.Windows.Forms.Form
Public Sub New(ByVal pForm As System.Windows.Forms.Form)
ParentForm = pForm
End Sub
Default Public ReadOnly Property Item(ByVal index As Integer) As System.Windows.Forms.Button
Get
Return Me.List.Item(index) ' ButtonArray的List 屬性從CollectionBase 繼承
End Get
End Property
Public Sub AddItem()
Dim btnItem As New System.Windows.Forms.Button
Me.List.Add(btnItem)
ParentForm.Controls.Add(btnItem) '向窗體中增加控件
btnItem.Tag = Me.Count 'Count屬性從CollectionBase 繼承
btnItem.Top = Me.Count * 30
btnItem.Left = 200
btnItem.Text = "Button" Me.Count.ToString
AddHandler btnItem.Click, AddressOf btnItem_Click '綁定事件處理程序
End Sub
Public Sub AddItem(ByVal btnItem As System.Windows.Forms.Button)
Me.List.Add(btnItem)
AddHandler btnItem.Click, AddressOf btnItem_Click '綁定事件處理程序
End Sub
Public Sub RemoveItem()
If Me.Count 0 Then
ParentForm.Controls.Remove(Me(Me.Count - 1))
Me.List.RemoveAt(Me.Count - 1)
End If
End Sub
Public Sub btnItem_Click(ByVal sender As Object, ByVal e As System.EventArgs)
'在這里編寫控件數(shù)組對點擊事件的響應
'例如:
MsgBox("點擊:" sender.GetType().ToString CType(CType(sender, Button).Tag, String))
End Sub
End Class
使用創(chuàng)建的控件數(shù)組
在Form1中放置兩個按鈕Button1、Button2,分別測試控件數(shù)組的增添、刪除。
雙擊Form添加代碼:
Public Class Form1
Inherits System.Windows.Forms.Form
……Windows窗體設計器生成的代碼……
Dim Buttons As New ButtonArray(Me)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Buttons.AddItem()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Buttons.RemoveItem()
End Sub
End Class
其他的控件數(shù)組也可以用類似的方式來實現(xiàn)
例如 Label控件數(shù)組
LabelArray.vb代碼如下:
Public Class LabelArray
Inherits System.Collections.CollectionBase
Private ReadOnly ParentForm As System.Windows.Forms.Form
Public Sub New(ByVal pForm As System.Windows.Forms.Form)
ParentForm = pForm
End Sub
Default Public ReadOnly Property Item(ByVal index As Integer) As System.Windows.Forms.Label
Get
Return Me.List.Item(index) ' ButtonArray的List 屬性從CollectionBase 繼承
End Get
End Property
Public Sub AddItem(ByVal btnItem As System.Windows.Forms.Label)
Me.List.Add(btnItem)
AddHandler btnItem.Click, AddressOf btnItem_Click '綁定事件處理程序
End Sub
Public Sub btnItem_Click(ByVal sender As Object, ByVal e As System.EventArgs)
'在這里編寫控件數(shù)組對點擊事件的響應
'例如:
MsgBox("點擊:" sender.GetType().ToString CType(CType(sender, Label).Tag, String))
End Sub
End Class
使用創(chuàng)建的Label控件
在Form1中放置兩個按鈕Label1、Label2
雙擊Form添加代碼:
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows 窗體設計器生成的代碼 "
Public Sub New()
MyBase.New()
'該調用是 Windows 窗體設計器所必需的。
InitializeComponent()
'在 InitializeComponent() 調用之后添加任何初始化
'用來綁定label
BindArray()
End Sub
……Windows窗體設計器生成的其他代碼……
#End Region
Dim Labels As New LabelArray(Me)
Public Sub BindArray()
Me.Label1.Tag = "1111"
Me.Label2.Tag = "222"
Labels.AddItem(Me.Label1)
Labels.AddItem(Me.Label2)
End Sub
End Class
然后可以測試點擊兩個label可以顯示相應的Tag的信息。
名稱欄目:vb.net控件數(shù)組 vb調用數(shù)組
本文來源:http://fisionsoft.com.cn/article/dodjghg.html