1. Vấn đề
Giả sử chúng ta có 10 ô textbox xử lý như sau:
Cách viết code như thế này đúng, nhưng khi viết code sẽ rất cực và mất thời gian.
Thay vì thế ta có thể viết code như sau:
Ở trên ta dùng vòng lặp For ~ Next để kiểm tra từng đối tượng trên Form. Code trên không khó, hãy ghi nhớ nó vào trong đầu để sử dụng bất cứ khi nào chúng ta thấy cần.
Đối với một đối tượng hay biến số X, nếu không biết kiểu (GetType) của nó là gì , ta có thể làm như sau: MsgBox(X.GetType) , ví dụ để kiểm tra X có phải là Integer hay không, ta viết If X.GetType Is GetType(Integer) .
Như ví dụ trên thì ta tìm kiếm o có phải là TextBox hay không.
2. Thuộc tính Controls
Việc điều khiển Control rất tiện lợi. Nhưng nếu trên form của các bạn có control như panel, Container, thì việc điều khiển control sẽ có khó khăn. Ta hãy xem xét vấn đề sau:
Mối quan hệ của các control như sau :
Theo hình trên, thông qua thuộc tính controls, ta có thể truy cập được control con, nhưng controls cháu thì không được.
Hãy nhớ điều này.
Nói tóm lại, ta không thể truy cập vào TextBox3 thông qua thuộc tính Controls của form.
Nhưng ta có thể thông qua thuộc tính Controls của Panel1 để truy cập vào TextBox3.
Bạn có thể thông qua trị số để truy cập tới nó. Hoặc thông qua tên của nó. Nhưng điều này thì bạn cũng chỉ có thể chỉ định một chỉ số hay một tên cụ thể.
(VB.NET 2005 trở đi thì mới chỉ định được tên. VB.NET2002, VB.NET2003 thì không chỉ định bằng tên được)
Code lúc này sẽ là:
3. Nhóm hóa thông qua thuộc tính controls.
Nhóm hóa thông qua tên:
Nhóm hóa thông qua chủng loại:
Nhóm hóa thông qua thuộc tính Tag :
Thuộc tính Tag mọi người có thể tự do thiết định, nó cũng không có chức năng gì. Vì vậy thông qua Tag để nhóm hóa theo ý đồ người code là rất hữu dụng.
4. Tự mình định nghĩa nhóm
5. Phương pháp đặc biệt
(Còn nữa)
Nguồn:
Giả sử chúng ta có 10 ô textbox xử lý như sau:
Mã:
TextBox1.Enabled = False
TextBox2.Enabled = False
TextBox3.Enabled = False
TextBox4.Enabled = False
TextBox5.Enabled = False
TextBox6.Enabled = False
TextBox7.Enabled = False
TextBox8.Enabled = False
TextBox9.Enabled = False
TextBox10.Enabled = False
Thay vì thế ta có thể viết code như sau:
Mã:
Dim o As Control
For Each o In Me.Controls
If o.GetType Is GetType(TextBox) Then
o.Enabled = False
End If
Next
Đối với một đối tượng hay biến số X, nếu không biết kiểu (GetType) của nó là gì , ta có thể làm như sau: MsgBox(X.GetType) , ví dụ để kiểm tra X có phải là Integer hay không, ta viết If X.GetType Is GetType(Integer) .
Như ví dụ trên thì ta tìm kiếm o có phải là TextBox hay không.
2. Thuộc tính Controls
Việc điều khiển Control rất tiện lợi. Nhưng nếu trên form của các bạn có control như panel, Container, thì việc điều khiển control sẽ có khó khăn. Ta hãy xem xét vấn đề sau:
Bạn cần đăng nhập để thấy đính kèm
Mối quan hệ của các control như sau :
Bạn cần đăng nhập để thấy đính kèm
Theo hình trên, thông qua thuộc tính controls, ta có thể truy cập được control con, nhưng controls cháu thì không được.
Hãy nhớ điều này.
Nói tóm lại, ta không thể truy cập vào TextBox3 thông qua thuộc tính Controls của form.
Nhưng ta có thể thông qua thuộc tính Controls của Panel1 để truy cập vào TextBox3.
Bạn có thể thông qua trị số để truy cập tới nó. Hoặc thông qua tên của nó. Nhưng điều này thì bạn cũng chỉ có thể chỉ định một chỉ số hay một tên cụ thể.
(VB.NET 2005 trở đi thì mới chỉ định được tên. VB.NET2002, VB.NET2003 thì không chỉ định bằng tên được)
Code lúc này sẽ là:
Mã:
Me.Controls(2).Visible = False
Mã:
Dim oControl As Control
For Each oControl In Panel1.Controls
oControl.Text = "tuhocvba.net"
Next
Mã:
Dim oControl As Control
For Each oControl In Me.Controls
If Strings.Left(oControl.Name, 7) = "txtNeed" Then
oControl.BackColor = Color.LightCoral
End If
Next
Mã:
Dim oControl As Control
For Each oControl In Me.Controls
If oControl.GetType Is GetType(Button) Then
oControl.Enabled = False
End If
Next
Mã:
Dim oControl As Control
For Each oControl In Me.Controls
If oControl.Tag = "Admin" Then
oControl.Enabled = False
End If
Next
4. Tự mình định nghĩa nhóm
Mã:
Dim MyControls As New ArrayList
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MyControls.Add(TextBox2)
MyControls.Add(TextBox3)
MyControls.Add(Button1)
End Sub
Mã:
Dim oControl As Control
For Each oControl In MyControls
oControl.Enabled = False
Next
Mã:
Dim i As Integer
Dim ControlName As String
For i = 1 To 5
ControlName = "ComboBox" & i
Me.Controls(ControlName).Enabled = False
Next
Nguồn:
Bạn cần đăng nhập để thấy link