自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

VB.NET控件自動(dòng)排序相關(guān)代碼示例指南

開發(fā) 后端
我們將會(huì)在這里通過一段詳細(xì)的代碼來對(duì)VB.NET控件自動(dòng)排序這一操作進(jìn)行以此深入的解讀,幫助大家充分掌握這一應(yīng)用技巧,提高編程效率。

在如今這個(gè)信息技術(shù)更新速度奇快的時(shí)代中,程序員是幸福的。因?yàn)樗麄兛梢酝ㄟ^這些不斷更新的技術(shù)帶來的更重幫助,輕松的完成各項(xiàng)工作需求。VB.NET編程語(yǔ)言就是其中一個(gè)作用比較大的編程語(yǔ)言。#t#

在VB.NET中,面對(duì)大量相同控件的整齊排列時(shí),雖可在設(shè)計(jì)時(shí)排列好,但難免在調(diào)試中不小心移動(dòng),或后來又增減一些。于是有人用語(yǔ)句在程序中調(diào)節(jié),其艱辛是可想而知的(筆者深有體會(huì)),即使位置排好了,由于控件添加的先后問題,其索引屬性(.TabIndex)往往一片混亂.能不能讓控件的位置、索引屬性的排序?qū)崿F(xiàn)自動(dòng)化呢?經(jīng)過一番思索,筆者終于找到了很好的VB.NET控件自動(dòng)排序解決辦法,并成功應(yīng)用于自己開發(fā)的注冊(cè)表修改器中。

例子:新建工程,放入一個(gè)Frame控件Frame1,再在Frame1 中放入4個(gè)復(fù)選框checkbox1、checkbox2、checkbox3、checkbox4
在form_load()子過程中加入一句:ArrangeChildren frame1 運(yùn)行結(jié)果為4個(gè)復(fù)選框等間距整齊地排列在其容器frame1 中。在設(shè)計(jì)窗口中,你可以任意調(diào)整它們的上下位置,運(yùn)行后將按它們?cè)O(shè)計(jì)時(shí)的上下順序整齊排列,并且它們的索引順序按由下到大排列。(索引順序的作用大家知道吧——讓你的程序支持鍵盤操作)。更妙的是,你可在容器中任意增加、減少控件數(shù)量(類型要一樣),運(yùn)行后它們都能整齊排列,從而一勞永逸。

以下是具體的VB.NET控件自動(dòng)排序子過程代碼

  1. Public Sub ArrangeChildren(Father As Control) 'Father為容器控件 

功能:

(1)對(duì)容器控件內(nèi)的子控件的TabIndex值進(jìn)行排序

排序依據(jù)是:由上到下(.Top值由小到大),TabIndex小到大

(2)對(duì)容器控件內(nèi)的子控件等間距整齊排列

  1. Dim Child As Control '窗體中的任一控件  
  2. Dim Children() As Control '屬于容器中的控件數(shù)組  
  3. Dim Tags() As Integer '元素的值記錄了控件的TabIndex值  
  4. Dim TempChild As Control '臨時(shí)控件  
  5. Dim i As Integer, j As Integer  
  6. Dim x As Integer, Y As Integer  
  7. Dim wChild As Integer, hChild As Integer  
  8. Dim num As Integer  
  9. Dim strTemp As String  
  10. Const ADJUST as integer=150 ’微調(diào)(可適當(dāng)增減)  
  11. num = 0 
  12. For Each Child In Father.Parent.Controls ‘搜索容器所在窗體中的每一個(gè)控件  
  13. If TypeOf Child Is CheckBox Then ‘這個(gè)判斷是為了提高效率,可不要  
  14. If Child.Container Is Father Then  
  15. ReDim Preserve Children(num)  
  16. ReDim Preserve Tags(num)  
  17. Set Children(num) = Child  
  18. Children(num).Tag = num 
  19. Tags(num) = Children(num).TabIndex  
  20. numnum = num + 1  
  21. End If  
  22. End If  
  23. Next  
  24.  
  25. If num < 1 Then Exit Sub ‘當(dāng)容器中一個(gè)子控件也沒有時(shí),退出  
  26. num = UBound(Children)   
  27. SortProc Tags ‘將數(shù)組Tags()按由小到大順序排序  
  28. ArrayTagProc Children ‘越在屏幕上面的控件,其<.top>值越小,故讓其<.tag>值也小  
  29. For i = 0 To num  
  30. Children(i).TabIndex = Tags(Children(i).Tag)  
  31. Next i ‘越在屏幕上面的控件,其索引值小(實(shí)現(xiàn)索引值的排序)  
  32. ArrayTabIndexProc Children '  
  33. x = 200 ‘控件在其容器中的起始位置  
  34. wChild = 4000 ‘控件寬度  
  35. hChild = 255 ‘控件高度  
  36. Y = (Father.Height - ADJUST - (num + 1) * hChild) / (num + 2)  
  37. For j = 0 To num  
  38. Children(j).Move x, (j + 1) * Y + j * hChild + ADJUST, wChild, hChild  
  39. Next j  
  40. End Sub  
  41.  
  42. Public Sub SortProc(ArrInt() As Integer) '對(duì)整數(shù)數(shù)組進(jìn)行排序  
  43. Dim i As Integer, j As Integer  
  44. Dim temp As Integer  
  45. Dim num As Integer '數(shù)組大小  
  46. num = UBound(ArrInt)  
  47. For i = 0 To num  
  48. For j = i + 1 To UBound(ArrInt)  
  49. If ArrInt(i) > ArrInt(j) Then  
  50. temp = ArrInt(i)  
  51. ArrInt(i) = ArrInt(j)  
  52. ArrInt(j) = temp  
  53. End If  
  54. Next j  
  55. Next i  
  56. End Sub  
  57.  
  58. Public Sub ArrayTabIndexProc(ArrControl() As Control) '對(duì)控件數(shù)組進(jìn)行排序  
  59. '控件數(shù)組 ArrControl(0),ArrControl(1),ArrControl(2),.....ArrControl(n)  
  60. '的TabIndex值按由低到高順序排列  
  61. Dim i As Integer, j As Integer  
  62. Dim temp As Control  
  63. Dim num As Integer  
  64.  
  65. num = UBound(ArrControl)  
  66. For i = 0 To num  
  67. For j = i + 1 To UBound(ArrControl)  
  68. If ArrControl(i).TabIndex > ArrControl(j).TabIndex Then  
  69. Set temp = ArrControl(i)  
  70. Set ArrControl(i) = ArrControl(j)  
  71. Set ArrControl(j) = temp  
  72. End If  
  73. Next j  
  74. Next i  
  75. End Sub  
  76.  
  77. Public Sub ArrayTagProc(arr() As Control) '對(duì)控件的<.tag>屬性進(jìn)行排序  
  78. '越在屏幕上面的控件,其<.top>值越小,故讓其<.tag>值也?。ㄗ罹C的目的是讓其索引值小)  
  79. Dim i As Integer, j As Integer  
  80. Dim temp As Variant  
  81. Dim num As Integer  
  82. Dim arrTop() As Integer '存儲(chǔ)控件<.Top屬性>數(shù)組  
  83.  
  84. num = UBound(arr)  
  85. ReDim arrTop(num)  
  86. For i = 0 To num  
  87. arrTop(i) = arr(i).Top  
  88. Next  
  89. SortProc arrTop '按照由小到大順序  
  90. For i = 0 To num  
  91. For j = 0 To num  
  92. If arr(i).Top = arrTop(j) Then arr(i).Tag = j 
  93. Next j  
  94. Next i  
  95. End Sub 

以上VB.NET控件自動(dòng)排序程序在VB5.0、VB6.0中調(diào)試通過。讀者可以用到自己的程序中,今后再也不用為調(diào)整位置和索引順序而作一些簡(jiǎn)單重復(fù)勞動(dòng)了。

責(zé)任編輯:曹凱 來源: wewill.cn
相關(guān)推薦

2010-01-11 15:01:55

VB.NET冒泡排序

2010-01-19 12:53:59

VB.NET Text

2010-01-18 15:01:02

VB.NET異常迭代捕

2010-01-14 13:08:37

VB.NET運(yùn)算符

2010-01-13 10:53:24

VB.NET控件

2009-10-14 10:19:57

VB.NET Doma

2009-10-14 16:04:43

VB.NET Noti

2009-10-20 10:16:24

VB.NET COMB

2009-10-23 13:14:38

2010-01-08 10:48:05

VB.NET多線程

2010-01-19 17:03:25

VB.NET可執(zhí)行語(yǔ)句

2010-01-13 18:09:09

VB.NET動(dòng)態(tài)生成代

2010-01-20 14:32:12

VB.NET轉(zhuǎn)換運(yùn)算符

2010-01-19 10:12:39

VB.NET Butt

2009-10-14 11:27:20

VB.NET Grou

2009-10-23 13:10:14

VB.NET List

2009-10-16 14:31:48

VB.NET Noti

2009-10-12 15:02:51

VB.NET動(dòng)態(tài)控件

2010-01-12 17:54:42

VB.NET Dlli

2009-10-14 17:21:47

VB.NET定制Win
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)