Подтверждение заказа - PullRequest
0 голосов
/ 15 апреля 2011

У меня есть 4 раскрывающихся списка в форме VB.Net Windows: Subpriority1, Subpriority2, Subpriority3 и Subpriority4

Пользователь не может ввести Subpriority3, не введя значение для Subpriority1 и Subpriority2.Теперь мне нужен способ проверить это в VB, надеюсь, без необходимости использовать вложенные операторы IF.Любая помощь, ребята?

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

Что вы должны сделать, это очистить все выпадающие списки, кроме первого. Затем в событии .SelectedIndexChanged загрузите данные для второго раскрывающегося списка. Повторите для выпадающего три, чтобы загрузить четвертый.

0 голосов
/ 15 апреля 2011

Здесь! Этот метод будет работать до 10 элементов управления:

Все, что вам нужно сделать, это:

  1. Убедитесь, что каждый элемент управления в вашем наборе имеет то же имя, кроме последней цифры.

  2. Убедитесь, что элементы управления пронумерованы последовательно (неважно, начинаются ли они с 0 или 1)

  3. Добавить EnforceSequence (отправитель, e) в методе TextChanged каждого элемента управления в наборе.

  4. Добавить EnforceSequence ( NameOfYourFirstControl , Nothing) для события Form_Load, ИЛИ установить для параметра Enabled значение False для всех элементов управления в наборе, кроме первого.

  5. Добавьте следующий метод к коду вашей формы:


''' <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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...