Здесь! Этот метод будет работать до 10 элементов управления:
Все, что вам нужно сделать, это:
Убедитесь, что каждый элемент управления в вашем наборе имеет то же имя, кроме последней цифры.
Убедитесь, что элементы управления пронумерованы последовательно (неважно, начинаются ли они с 0 или 1)
Добавить EnforceSequence (отправитель, e) в методе TextChanged каждого элемента управления в наборе.
Добавить EnforceSequence ( NameOfYourFirstControl , Nothing) для события Form_Load, ИЛИ установить для параметра Enabled значение False для всех элементов управления в наборе, кроме первого.
Добавьте следующий метод к коду вашей формы:
''' <summary>Ensure that a set of controls are available to the user sequentially.</summary>
''' <param name="sender">The Sender parameter as provided by the Control's change event</param>
''' <param name="e">The EventArgs parameter as provided by the Control's change event</param>
''' <remarks>
''' To make this work, All of the participating controls must have the same name, with a consecutive index appended. E.g. MyControl1, MyControl2, MyControl3.
''' Add a call to EnforceSequence(sender, e) in the TextChanged event of each of the controls.
''' </remarks>
Private Sub EnforceSequence(ByVal sender As Object, ByVal e As System.EventArgs)
'The control that raised the event
Dim validatingContol As System.Windows.Forms.Control = CType(sender, System.Windows.Forms.Control)
'Get the name of the DropDown set
Dim controlName As String = validatingContol.Name.Substring(0, validatingContol.Name.Length - 1)
'Get the index of the control (i.e. the number at the end of the name)
Dim validatingControlIndex As Integer = Integer.Parse(validatingContol.Name.Substring(validatingContol.Name.Length - 1))
'Check to see if there's another control with the same name in the sequence.
If Not Me.Controls(controlName & validatingControlIndex + 1) Is Nothing Then
'If this control is empty, set all the following controls to empty and disabled.
Me.Controls(controlName & validatingControlIndex + 1).Enabled = Not validatingContol.Text = ""
'Ask the next control to do the same check
EnforceSequence(Me.Controls(controlName & validatingControlIndex + 1), Nothing)
End If
End Sub
Если у вас более 10 элементов управления, просто измените подстроки, чтобы получить 2 последние цифры, но затем вы должны присвоить всем вашим элементам управления 2 цифры, например, ComboBox01