Как получить последний выбранный элемент или его индекс в HTML множественного выбора с помощью VB.Net?

1

Как указано в msdn о свойстве HtmlSelect.SelectedIndex

Если для свойства Multiple установлено значение true, что указывает на одновременное выделение нескольких элементов, свойство SelectedIndex содержит индекс первого выбранного элемента.

Я использую API SHDocVw.InternetExplorer в моем приложении Vb.Net WinForms, и я пытаюсь получить текст последнего выбранного элемента пользователем, но SelectedIndex не работает для меня в случае множественного выбора HTML.

Здесь мой код

 Private Sub onMouseDown(ByVal pEvtObj As mshtml.IHTMLEventObj)
    Dim srcElement = pEvtObj.srcElement
    If TypeOf (srcElement) Is IHTMLSelectElement Then
        Dim DropDownElement = CType(srcElement, IHTMLSelectElement)
        Dim elementValue = CType(DropDownElement.item(DropDownElement.selectedIndex), IHTMLOptionElement).text
    End If
End Sub

Может ли кто-нибудь дать мне знать, как это сделать?

  • 1
    Просто предположение из опыта работы с такими объектами: есть ли свойство SelectedIndices?
  • 0
    Нет такой собственности нет.
Показать ещё 4 комментария
Теги:
internet-explorer

2 ответа

1
Лучший ответ

Не получив прямого пути, Чтобы достичь этого, я использовал следующий способ:

1) Сохраняйте выбранные значения в событиях MouseDown и KeyDown.

2) Также добавьте обработчик DropDownElement для своего события onchange в двух вышеупомянутых событиях.

3) Теперь, когда значение изменится, он вызовет метод, по которому добавляется обработчик. Здесь мы можем получить текущие выбранные элементы и рассчитать де-выбранный и последний выбранный элемент.

Я знаю, что это не чище, но работает как шарм.

0

Grumbler85 правильный; вам нужно свойство SelectedIndices. Это сборник, содержащий индексы на основе нуля всех выбранных в данный момент элементов в элементе управления HTMLSelect.

Свойство HtmlSelect.SelectedIndices (ссылка MSDN)

  • 0
    Это не получит ОП, что он хочет. Если я выберу элемент 10, затем элемент 5, затем элемент 1, значения, возвращаемые из SelectedIndices, будут 0,4,9. Какой из них пользователь выбрал последним? Если я не читаю вопрос неправильно.
  • 0
    Если это то, что он хочет, то он не может получить его в vb.NET, и ему придется использовать клиентский скрипт, чтобы реагировать на события щелчка. Это действительно становится проблематичным. Что, если пользователь выбирает, а затем отменяет выбор элемента? Раскрывающийся список не может быть лучшим выбором для варианта использования.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню