Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Фокус в ListView - не отрабатывает Добавлено: 12.06.07 12:55  

Автор вопроса:  wellgold | Web-сайт: wellgold.narod.ru
Привет всем!!!
Помогите пожалуйста с этой бедой:
Есть такой код:
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-сайт: sham.clan.su
 Профиль | | #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
FocusedItem - а это просто устанавливает фокус на запись

в смысле на строку...

Ответить

Номер ответа: 5
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #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-сайт: sham.clan.su
 Профиль | | #6
Добавлено: 12.06.07 17:11
wellgold, вообще проверь. что ListView1.FocusedItem возвращает ;)

и замени свою конструкцию на типа:
    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        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-сайт: wellgold.narod.ru
 Профиль | | #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-сайт: wellgold.narod.ru
 Профиль | | #8
Добавлено: 12.06.07 20:02
ListView1.FocusedItem, а ListView1.SelectedItems(0)
Отработало!
Огромное спасибо всем! А особенно -АлександР-

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам