Страница: 1 |
Страница: 1 |
Вопрос: Фокус в ListView - не отрабатывает
Добавлено: 12.06.07 12:55
Автор вопроса: wellgold | Web-сайт:
Привет всем!!!
Помогите пожалуйста с этой бедой:
Есть такой код:
Public textItemID0 As Integer = 0 ' Объявляю в класе модуля MDB
Public Sub ListView1_Load(ByRef textItemID0 As Integer)
ListView1.Items.Clear()
'Далее заполняем 1-й листвью
.....
....
'Выделяю контролл (перевожу фокус на контолл)
ListView1.Focus()
'Выделяем запись по умолчанию с индексом 0(перевожу фокус на Item)
ListView1.Items.Item(textItemID0).Selected = True
End Sub
Public Sub ListView2_Load()
ListView2.Items.Clear()
' Получаю текст выделенного ранее элемента из листвью 1
text0 = ListView1.FocusedItem.Text() ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'Заполняю листвью данными в зависимости от выделенного элемента
......
......
End Sub
Есть кнопка "Обновить" вот её код:
Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
textItemID0 = ListView1.FocusedItem.Index
Call ListView1_Load(textItemID0)
Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Timer1.Enabled = False
Call ListView2_Load()
End Sub
После "Обновить" возникает проблема: Выделяет строчку верно, а вот правую сторону заполняет неверно. Где текст выделен восклицательными знаками - там обманывает!!!
Заранее спасибо!
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
s12
Вопросов: 24
Ответов: 363
Профиль | | #1
Добавлено: 12.06.07 14:29
Как именно обманывает?
Всегда показывает одну и ту же запись? Или ошибается на несколько записей?
Номер ответа: 2
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #2
Добавлено: 12.06.07 15:13
а разве
ListView1.FocusedItem и Selected - это одно и то же?
Номер ответа: 3
Автор ответа:
s12
Вопросов: 24
Ответов: 363
Профиль | | #3
Добавлено: 12.06.07 16:14
ListView1.FocusedItem и Selected - это одно и то же?
Как ни странно нет.
Selected - это и есть выбор
FocusedItem - а это просто устанавливает фокус на запись. Прога в 95 процентах случаев воспринимает тока Selected.
Но помнится был такой случай, когда прога наотрез отказывалась хавать селект, и работала только с фокусом. Почему так, мы разбиратся не стали некогда было, наверно что то в свойствах лист_вьюшки напоганили.
Номер ответа: 4
Автор ответа:
s12
Вопросов: 24
Ответов: 363
Профиль | | #4
Добавлено: 12.06.07 16:16
в смысле на строку...
Номер ответа: 5
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #5
Добавлено: 12.06.07 17:08
тут если только класс SelectedListViewItemCollection циклом перебрать, чует мое сердце
как тут
http://msdn2.microsoft.com/en-us/library/system.windows.forms.listview.selectedlistviewitemcollection(VS.71).aspx
Номер ответа: 6
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #6
Добавлено: 12.06.07 17:11
wellgold, вообще проверь. что ListView1.FocusedItem возвращает
и замени свою конструкцию на типа:
ListView1.Items.Item(1).Selected = True
Dim breakfast As ListView.SelectedListViewItemCollection = _
Me.ListView1.SelectedItems
Dim item As ListViewItem
For Each item In breakfast
item.Text = "1"
Next
End Sub
Номер ответа: 7
Автор ответа:
wellgold
Вопросов: 1
Ответов: 2
Web-сайт:
Профиль | | #7
Добавлено: 12.06.07 19:40
Возвращает запись с индексом 0, при этом ставится куда надо
Пример: указываю
ListView1.Items.Item(1).Selected = True
т.е. фокус на запись с индексом 1 (второй айтем) он его выделяет но событие(Button1_Click_ и ListView1_SelectedIndexChanged) срабатывает на 0-й айтем.
Разницу не чувствую, при старом примере тоже ставился куда надо и события так же срабатывали по 0 айтему а не по выделенному. Надо по выделенному
Номер ответа: 8
Автор ответа:
wellgold
Вопросов: 1
Ответов: 2
Web-сайт:
Профиль | | #8
Добавлено: 12.06.07 20:02
ListView1.FocusedItem, а ListView1.SelectedItems(0)
Отработало!
Огромное спасибо всем! А особенно -АлександР-