成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

VB.NET控件自動排序相關代碼示例指南

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

在如今這個信息技術更新速度奇快的時代中,程序員是幸福的。因為他們可以通過這些不斷更新的技術帶來的更重幫助,輕松的完成各項工作需求。VB.NET編程語言就是其中一個作用比較大的編程語言。#t#

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

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

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

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

功能:

(1)對容器控件內的子控件的TabIndex值進行排序

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

(2)對容器控件內的子控件等間距整齊排列

  1. Dim Child As Control '窗體中的任一控件  
  2. Dim Children() As Control '屬于容器中的控件數組  
  3. Dim Tags() As Integer '元素的值記錄了控件的TabIndex值  
  4. Dim TempChild As Control '臨時控件  
  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 ’微調(可適當增減)  
  11. num = 0 
  12. For Each Child In Father.Parent.Controls ‘搜索容器所在窗體中的每一個控件  
  13. If TypeOf Child Is CheckBox Then ‘這個判斷是為了提高效率,可不要  
  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 ‘當容器中一個子控件也沒有時,退出  
  26. num = UBound(Children)   
  27. SortProc Tags ‘將數組Tags()按由小到大順序排序  
  28. ArrayTagProc Children ‘越在屏幕上面的控件,其<.top>值越小,故讓其<.tag>值也小  
  29. For i = 0 To num  
  30. Children(i).TabIndex = Tags(Children(i).Tag)  
  31. Next i ‘越在屏幕上面的控件,其索引值小(實現索引值的排序)  
  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) '對整數數組進行排序  
  43. Dim i As Integer, j As Integer  
  44. Dim temp As Integer  
  45. Dim num As Integer '數組大小  
  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) '對控件數組進行排序  
  59. '控件數組 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) '對控件的<.tag>屬性進行排序  
  78. '越在屏幕上面的控件,其<.top>值越小,故讓其<.tag>值也小(最綜的目的是讓其索引值小)  
  79. Dim i As Integer, j As Integer  
  80. Dim temp As Variant  
  81. Dim num As Integer  
  82. Dim arrTop() As Integer '存儲控件<.Top屬性>數組  
  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控件自動排序程序在VB5.0、VB6.0中調試通過。讀者可以用到自己的程序中,今后再也不用為調整位置和索引順序而作一些簡單重復勞動了。

責任編輯:曹凱 來源: wewill.cn
相關推薦

2010-01-11 15:01:55

VB.NET冒泡排序

2010-01-18 15:01:02

VB.NET異常迭代捕

2010-01-19 12:53:59

VB.NET Text

2010-01-13 10:53:24

VB.NET控件

2009-10-23 13:14:38

2009-10-14 16:04:43

VB.NET Noti

2009-10-14 10:19:57

VB.NET Doma

2009-10-20 10:16:24

VB.NET COMB

2010-01-14 13:08:37

VB.NET運算符

2010-01-08 10:48:05

VB.NET多線程

2010-01-19 17:03:25

VB.NET可執行語句

2010-01-13 18:09:09

VB.NET動態生成代

2010-01-20 14:32:12

VB.NET轉換運算符

2010-01-19 10:12:39

VB.NET Butt

2009-10-14 11:27:20

VB.NET Grou

2009-10-16 14:31:48

VB.NET Noti

2009-10-23 13:10:14

VB.NET List

2009-10-12 15:02:51

VB.NET動態控件

2009-10-14 17:21:47

VB.NET定制Win

2009-10-10 16:44:52

VB.NET開發控件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 美国黄色一级片 | 亚洲欧洲成人av每日更新 | 一区视频在线免费观看 | 成人免费网站 | www.久久 | 在线成人免费av | 亚洲精选久久 | 免费欧美| 成人免费在线视频 | 欧美精品在线免费 | 欧美一级久久 | 天天干天天爱天天爽 | 亚洲视频一区二区 | 成人在线视频看看 | 久久精品一区二区 | 午夜国产| h视频在线观看免费 | 亚洲精品国产一区 | 日本在线网址 | 国产第一亚洲 | 在线成人免费视频 | 中文字幕成人av | 欧美中文| 日韩在线h | 日韩欧美中文字幕在线观看 | 国产午夜视频 | 99热视| 中文字幕在线观看一区 | a级在线观看| a级片在线观看 | 成人国产在线观看 | 色99视频 | 亚洲欧洲小视频 | 久久久123 | 一区二区三区视频在线观看 | 香蕉超碰 | 国产精品久久久久久婷婷天堂 | a级大片免费观看 | www.888www看片 | 干一干操一操 | 三级在线免费 |