日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
自己動(dòng)手實(shí)現(xiàn)VB.NET控件數(shù)組

VB.NET經(jīng)過(guò)長(zhǎng)時(shí)間的發(fā)展,很多用戶都很了解VB.NET了,這里我發(fā)表一下個(gè)人理解,和大家討論討論。由于項(xiàng)目的需求又變了,我必須要在我的窗口上根據(jù)讀取的文件不同添加不同的checkbox,我本以為VB.NET和vb一樣一定會(huì)有控件數(shù)組呢,結(jié)果網(wǎng)上的高手們都說(shuō)沒(méi)有VB.NET控件數(shù)組這個(gè)概念的。不過(guò)可以自己寫(xiě)一個(gè)類來(lái)實(shí)現(xiàn)VB.NET控件數(shù)組的功能。他們都有現(xiàn)成的代碼,我拿來(lái)用了,很好用。這里我就只簡(jiǎn)單說(shuō)一下我在用這個(gè)類的過(guò)程中出現(xiàn)的問(wèn)題。應(yīng)該比較值得提一下。

 
 
 
  1. Public Class CheckBoxArrClass CheckBoxArr
  2. Inherits System.Collections.CollectionBase
  3. Private ReadOnly ParentGrpBx As System.Windows.Forms.GroupBox
  4. Public Sub New()Sub New(ByVal pGrpBx As System.Windows.Forms.GroupBox)
  5. ParentGrpBx = pGrpBx
  6. End Sub
  7. Default Public ReadOnly Property Item()Property Item
    (ByVal index As Integer) As System.Windows.Forms.CheckBox
  8. Get
  9. Return Me.List.Item(index)
  10. End Get
  11. End Property
  12. Public Sub AddItem()Sub AddItem()
  13. Dim CheckBox1 As New System.Windows.Forms.CheckBox
  14. Me.List.Add(CheckBox1)
  15. ParentGrpBx.Controls.Add(CheckBox1)''向窗體中增加控件
  16. CheckBox1.Tag = Me.Count''Count屬性從CollectionBase 繼承
  17. CheckBox1.Top = Me.Count * 30
  18. CheckBox1.Left = 200
  19. CheckBox1.Text = "CheckBox" & Me.Count.ToString
  20. End Sub
  21. Public Sub AddItem()Sub AddItem(ByVal CheckBox1 As System.Windows.Forms.CheckBox)
  22. Me.List.Add(CheckBox1)
  23. End Sub
  24. Public Sub RemoveItem()Sub RemoveItem()
  25. If Me.Count > 0 Then
  26. ParentGrpBx.Controls.Remove(Me(Me.Count - 1))
  27. Me.List.RemoveAt(Me.Count - 1)
  28. End If
  29. End Sub
  30. End Class

這里要提的問(wèn)題很簡(jiǎn)單:

1、添加的控件要有個(gè)容器,也就是你要向哪個(gè)地方添加控件的地方。這里,在我標(biāo)為紅色的部分設(shè)置了添加控件的“父親”,你可以直接添加到你的窗體里,那么就可以將紅色部分改寫(xiě)為:“ParentForm”和“form”即將那一句改為:Private ReadOnly ParentForm As System.Windows.Forms.Form。在程序里,我是將checkbox添加到一個(gè)groupbox里的。所以向哪個(gè)容器添加控件就是需要你改的了。

2、控件的布局。記住,控件的位置永遠(yuǎn)是相對(duì)于他的容器的坐標(biāo)的。一下給出我添加控件的擺放代碼:三個(gè)checkbox占一行。

 
 
 
  1. Public Sub GenerateDynCheckBox()Sub GenerateDynCheckBox(ByRef langList As ArrayList)
  2. CheckBox1 = New CheckBoxArr(GroupBoxAttrInfo)
  3. Dim i As Integer
  4. For i = 0 To langList.Count - 1 'langList 存放各國(guó)語(yǔ)言English,F(xiàn)rench。。。。
  5. 'add the checkbox array
  6. CheckBox1.AddItem()
  7. CheckBox1(i).Text = langList(i)
  8. CheckBox1(i).Checked = True
  9. CheckBox1(i).Height = 28
  10. 'layout the checkboxes
  11. If i = 0 Then
  12. CheckBox1(i).Top = 20
  13. CheckBox1(i).Left = 10
  14. ElseIf i = 1 Then 'Or 2 Then
  15. CheckBox1(i).Top = 20
  16. CheckBox1(i).Left = CheckBox1(i - 1).Left + CheckBox1(i - 1).Width
  17. ElseIf i = 2 Then
  18. CheckBox1(i).Top = 20
  19. CheckBox1(i).Left = CheckBox1(i - 1).Left + CheckBox1(i - 1).Width
  20. ElseIf i <> 0 And i <> 1 And i <> 2 Then
  21. CheckBox1(i).Top = CheckBox1(i - 3).Top + CheckBox1(i - 3).Height + 10
  22. CheckBox1(i).Left = CheckBox1(i - 3).Left
  23. End If
  24. Next i
  25. End Sub

3、刪除控件。用Checkbox的RemoveItem方法,不要使用RemoveAt方法。RemoveAt方法會(huì)導(dǎo)致刪除失敗,會(huì)提示NullReferenceException的錯(cuò)誤,具體為什么我也沒(méi)有再進(jìn)一步研究,如果有高手知道,可以指教一下,小女在這里多謝了。

以上就是我在使用VB.NET控件數(shù)組的一些心得,拙見(jiàn),見(jiàn)笑。


網(wǎng)站名稱:自己動(dòng)手實(shí)現(xiàn)VB.NET控件數(shù)組
網(wǎng)站網(wǎng)址:http://www.5511xx.com/article/dpigocs.html