Как расширить поле со списком на фокус событий? - PullRequest
2 голосов
/ 17 декабря 2009

Я хочу автоматически развернуть поле со списком при фокусировке события. Я установил Droppeddown = True в событии gotfocus, но это имеет побочный эффект. Когда событие click срабатывает, оно раскрывается и сразу закрывается. Как я могу избежать этого?

Вот код:

Private Sub cmbElectLoadPS_gotfocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbElectLoadPS.GotFocus
       cmbElectLoadPS.DroppedDown = True
End Sub

Ответы [ 4 ]

4 голосов
/ 05 января 2010

Как насчет проверки, если DroppedDown уже есть?

Private Sub cmbElectLoadPS_gotfocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbElectLoadPS.GotFocus
       if Not cmbElectLoadPS.DroppedDown Then
          cmbElectLoadPS.DroppedDown = True
       End If
End Sub

Если вам нужно такое поведение для всех ваших комбо-элементов управления, лучше создать собственную реализацию

Pulic Class CustomComboBox
     Inherits ComboBox

    Protected Overrides Sub OnEnter(ByVal e As System.EventArgs)
           if Not DroppedDown Then
              DroppedDown = True
           End If
    End Sub

End Class
0 голосов
/ 29 декабря 2013

Чтобы реализовать эту функцию для нескольких элементов управления со списком, вместо того, чтобы наследовать этот список как новый пользовательский элемент управления, я бы предложил следующее простое решение:

Private Sub AutoDropDownCombobox_Enter(sender As Object, e As EventArgs) Handles _
    cboControl1.Enter, cboControl2.Enter ' register additional events here
    If Not CType(sender, ComboBox).DroppedDown Then
        CType(sender, ComboBox).DroppedDown = True
    End If
End Sub
0 голосов
/ 13 ноября 2011

Создайте таймер с именем tmrDropDown (вы должны создать таймер для каждого ComboBox) и оставьте его свойства по умолчанию. Добавьте этот код:

Private Sub cmbBox_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmbBox.GotFocus
    tmrDropDown.Enabled = True
End Sub

И

Private Sub tmrDropDown_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrDropDown.Tick
    cmbBox.DroppedDown = True
    tmrDropDown.Enabled = False
End Sub
0 голосов
/ 17 декабря 2009

Оу ... добавить то же значение в ComboBox при событии Mouseup .. это бы сработало :) как:

    private void comboBox1_Enter(object sender, EventArgs e)
    {

        comboBox1.DroppedDown = true;
    }

    private void comboBox1_MouseUp(object sender, MouseEventArgs e)
    {
        comboBox1.DroppedDown = true;
    }

Не ваше лучшее решение .. но это бы сработало:)

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