ListView, фокус на форму

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

ListView, фокус на форму

Сообщение lord0n » 27.06.2006 (Вт) 10:04

Господа, возникла у меня тут проблемка:
На форме находятся несколько кнопок.
При нажатии на кнопку вызывается следующий код:
Код: Выделить всё

But = "Prix"
lstDeport.Items.Clear()
lstDeport.Items.Add("Прием накладных", 0)
lstDeport.Items.Add("Изменение накладных", 1)
lstDeport.Items.Add("Прием в склад", 2)
lstDeport.Items.Add("Изменение № прихода или № машины", 3)

Где But - глобальная переменная, а lstDeport - собственоо ListView
После выбора пункта в ListView срабатывает код:
Код: Выделить всё

Select Case But
   Case "Prix"
      Select Case e.ItemIndex
         Case 0
            frmPrix.Show()
         Case 1
         Case 2
         Case 3
      End Select
End Select

Собственно в чем суть проблеммы (точнее двух):
1. frmPrix открывается, НО фокус автоматом передается обратно на ListView первой формы (что не есть хорошо)
2. Если сразу после открытия frmPrix, её закрыть и нажать на второй пункт в ListView первой формы (который пока ни чего не вызывает), то снова откроется frmPrix
Есть идеи?
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

SpawnProduction
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 29.06.2006 (Чт) 16:36
Откуда: Россия, Москва, Зеленоград

Сообщение SpawnProduction » 29.06.2006 (Чт) 16:54

1. frmPrix открывается, НО фокус автоматом передается обратно на ListView первой формы (что не есть хорошо)

Используй ShowDialog вместо простого Show.
2. Если сразу после открытия frmPrix, её закрыть и нажать на второй пункт в ListView первой формы (который пока ни чего не вызывает), то снова откроется frmPrix

Пока не понимаю, почему, но раз уж так, то ставь в самом конце case
Код: Выделить всё
Exit Select
.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 30.06.2006 (Пт) 8:58

гыыыыыыыыыыы
1. шоудиалог мне не подходит (т. к. треба открывать другие формы)
2. я не только select exit ставил, но и exit sub - не работает
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 30.06.2006 (Пт) 10:20

уже лучше: со второй проблемой разобрался
способ правда идиотский, но работает - вызывает только то что нужно
Код: Выделить всё

      Select Case But
         Case "Prix"
            If lstDeport.Items(0).Selected = True Then frmPrix.Show()
            If lstDeport.Items(1).Selected = True Then frmAbout.Show()


осталось разобраться с фокусом
поможите ктонить, не бросайте коллегу в биде :lol:
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 30.06.2006 (Пт) 11:51

осталось разобраться с фокусом

событие SelectedIndexChanged срабатывает на MouseDown, в обработчике этого события(SelectedIndexChanged) у тебя загружается нужная тебе форма, фокус передается ей, и все хорошо... пока ты не отпустил кнопку мыши. Как только это произошло - фокус передается обратно той форме в которой сработал MouseUp .
Выход в следующем:
Код: Выделить всё
Private Sub lstDeport_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lstDeport.Click
        Select Case But
            Case "Prix"
                Select Case lstDeport.SelectedIndices(0)
                    Case 0
                        Form2.Show()
                    Case 1
                    Case 2
                    Case 3
                End Select
        End Select
    End Sub
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 30.06.2006 (Пт) 12:20

блин, где ты раньше был
я уже 3 дня мучаюсь

все заработало, ОГРОМНОЕ СПАСИБО :!: :!: :!:
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 95

    TopList