日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

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

新聞中心

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

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

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

1、添加的控件要有個(gè)容器,也就是你要向哪個(gè)地方添加控件的地方。這里,在我標(biāo)為紅色的部分設(shè)置了添加控件的“父親”,你可以直接添加到你的窗體里,那么就可以將紅色部分改寫為:“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ò)誤,具體為什么我也沒有再進(jìn)一步研究,如果有高手知道,可以指教一下,小女在這里多謝了。

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


文章標(biāo)題:自己動(dòng)手實(shí)現(xiàn)VB.NET控件數(shù)組
文章起源:http://www.dlmjj.cn/article/dpigocs.html