[VB.NET]控制項跳的順序
狀況如下:
- UI上有非常多的控制項輸入
- 且使用者說他想要打完Enter就繼續跳下一個
- 依照輸入或者選擇的條件,之後控制項跳的順序也會有所不同
我的寫法如下,應該不是最佳寫法,不過有達到目的我就心滿意足啦。
Dim Control() As Control = Nothing
Dim NowControlIndex As Integer
Dim A_Path() As Control = {cbxA, txtPlateInOut, txtCus, txtRent, txtDeposit, txtOilUnit, txtRentDay, txtPlace, dtpGateInDate, txtCarNo, txtPlateRemark, txtRemark}
Dim B_Path() As Control = {cbxA, txtPlateInOut, txtCus, txtForwarder, txtVessel, txtVoy, txtSO, txtContainerNO, txtOilUnit, txtRentDay, txtPlace, dtpGateInDate, txtCarNo, txtPlateRemark, txtRemark}
'根據選擇的不同,整體控制項跳的路徑就更改
If cbxA.SelectedIndex = 2 Then
Control = A_Path
ElseIf cbxA.SelectedIndex = 1 Then
Control = B_Path
End If
'按下Enter後跳Array中下一個順序的控制項
If e.KeyCode = Keys.Enter Then
'先找出目前控制項,是在Array中的第幾個
NowControlIndex = Array.IndexOf(Control, ActiveControl)
If NowControlIndex <> Control.Length - 1 Then
Control(NowControlIndex + 1).Focus()
Else
Control(0).Focus()
End If
End If
如果後續User還需要加入控制項,也只需要把它加進去Array就可以,彈性算還可以。
以上請各位前輩指教,或是有更有趣更方便的寫法也請多多指教^^。