Việc thiết kế trực quan giao diện cho 1 form trong C# (hay VB, J#, VB .Net, VC++,...) có ưu điểm là rất thân thiện, dễ dàng, nhanh chóng, nhưng cũng có khuyết điểm là vị trí và kích thước của các phần tử giao diện trong Form sẽ cố định, điều này thích hợp trong trường hợp Form có kích thước cố định (không có điều khiển phóng to/thu nhỏ và người dùng không có khả năng thay đổi động kích thước Form trong lúc sử dụng). Tuy nhiên, có nhiều trường hợp, ta muốn cho phép người dùng thay đổi động kích thước của Form (chế độ mặc định của Form VB cho phép người dùng thay đổi động kích thước Form). Như bạn đã biết, hành vi của hệ thống là chỉ thay đổi kích thước của Form theo yêu cầu người dùng, chứ không hề thay đổi kích thước của các phần tử giao diện trong Form sao cho phù hợp với kích thước mới của Form, việc này phải do ứng dụng thực hiện. Bạn có thể định nghĩa thủ tục Form_Resize, thủ tục này sẽ được kích hoạt mỗi lần bạn thay đổi vị trí/kích thước của Form, bạn sẽ tự viết đoạn code thay đổi vị trí và kích thước của các phần tử giao diện trong Form sao cho phù hợp với kích thước mới của Form. Thí dụ sau sẽ demo việc lập trình thay đổi kích thước và vị trí của các phần tử trong Form. Để đơn giản hóa vần đề, chúng tôi lấy thí dụ đơn giản là Form có 2 đối tượng ListBox và muốn khi Form thay đổi kích thước thì vị trí và kích thước của 2 ListBox trong Form cũng thay đổi theo sao cho mỗi ListBox chiếm nửa dọc của Form, các lề ngang và dọc của các ListBox đều là 10 pixel.
Private Sub Form_Resize()
Dim top As Integer
Dim left As Integer
Dim w As Integer
Dim h As Integer
ScaleMode = vbPixels
'tính lại vị trí và kích thước của ListBox1
left = 10
top = 10
w = Me.ScaleWidth - 20
h = (Me.ScaleHeight - 30) / 2
'thiết lập vị trí và kích thước của ListBox1
lbList1.Move left, top, w, h
'tính lại vị trí và kích thước của ListBox2
left = 10
top = (Me.ScaleHeight - 30) / 2 + 20
w = Me.ScaleWidth - 20
h = (Me.ScaleHeight - 30) / 2
'thiết lập vị trí và kích thước của ListBox2
lbList2.Move left, top, w, h
End Sub
Ý tưởng chung của việc tính lại vị trí và kích thước của từng phần tử giao diện trong Form là dựa vào kích thước mới của Form thông qua 2 thuộc tính của Form là ScaleWidth & ScaleHeight.
Theo PCWorld