[VB.NET]彈性控制畫面上控制項跳的順序

[VB.NET]控制項跳的順序

狀況如下:

  1. UI上有非常多的控制項輸入
  2. 且使用者說他想要打完Enter就繼續跳下一個
  3. 依照輸入或者選擇的條件,之後控制項跳的順序也會有所不同

 

我的寫法如下,應該不是最佳寫法,不過有達到目的我就心滿意足啦。

 

 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就可以,彈性算還可以。

以上請各位前輩指教,或是有更有趣更方便的寫法也請多多指教^^。