Страница: 1 | 2 | 3 | 4 |
|
Вопрос: ListView, Highlight строку
|
Добавлено: 01.09.10 22:40
|
|
Автор вопроса:
|
Здравствуйте!
Я новичок в .NET Возможно, эта тема уже когда-то обсуждалась, тогда подскажите, как найти.
Проблема такая.
Я использую TabControl. На второй и третьей TabPages у меня есть ListView controls. На первой странице - данные о хозяевах, на второй - список домашних животных у этого хозяина, на третьей - список прививок. Когда я перехожу со второй страницы на третью, первая строка (прививка) показана выбранной ((Selected), но когда я перехожу на вторую страницу (независимо - с первой или с третьей) ни одна из строк не "хайлатится" (извините, не знаю, какое русское слово используется).
В обоих случаях я использую совершенно одинаковые коды.
lsvDogs.Items(SelDog).Selected = True (для страницы 2)
lsvTags.Items(VacInd).Selected = True (для страницы 3)
Пожалуйста, помогите!
Ответить
|
Номер ответа: 3 Автор ответа:
Вопросов: 1 Ответов: 26
|
Профиль | | #3
|
Добавлено: 02.09.10 15:16
|
Алексей,
Спасибо за ответ. К сожалению, Ваш вариант тоже не работает. Focus я уже пробовал раньше - не работает. А вот HideSelection на пару с моим Select даёт интересный результат: видно, что строка подсвечивается (спасибо за перевод), но не обычным синим цветом, а серым.
Меня смущают две вещи:
1. В обоих TabPages я использовал одинаковые коды (включая ItemSelectionChanged events), но результат разный
2. У меня есть форма, в которой у меня нет TabControl, и в которой я также использую ListView. Так вот, когда я запускаю debug, в этой форме программа проходит через ItemSelectionChanged только один раз, а в форме с TabControl - трижды (в обеих TabPages). Может быть, это особенности TabControl?
Ответить
|
Номер ответа: 5 Автор ответа:
Вопросов: 1 Ответов: 26
|
Профиль | | #5
|
Добавлено: 02.09.10 17:12
|
Коды выложить не трудно. Вот они:
Private Sub frmDogsAndCats_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Enable_Owner(False)
 isplayOwner()
End Sub
Sub Enable_Owner(ByVal Switch As Boolean)
cmbState.Enabled = Switch
cmdDeleteOwner.Enabled = Not Switch
....................................
txtZIP.Enabled = Switch
End Sub
Sub DisplayOwner()
SqlStatement = "Select * from " & OwnersTable & " Where clientid = '" & ClientID & "'"
connAdapter.SelectCommand.CommandText = SqlStatement
If Not dsDCL.Tables("SelectedOwner" Is Nothing Then
dsDCL.Tables("SelectedOwner".Clear()
End If
connAdapter.SelectCommand.CommandType = CommandType.Text
connAdapter.Fill(dsDCL, "SelectedOwner"
drRow = dsDCL.Tables("SelectedOwner".Rows(0)
txtClientID_pgeOwners.Text = ClientID
......................
cmdPrior.Enabled = True
pgfDogsInfo.SelectedIndex = 0
pgeOwners.Select()
End Sub
Private Sub pgfDogsInfo_Selected(ByVal sender As Object, ByVal e As System.Windows.Forms.TabControlEventArgs) Handles pgfDogsInfo.Selected
Select Case e.TabPageIndex
Case Is = 1
If AddMode = True Or EditMode = True Then
Enable_Dogs(True)
Else
Enable_Dogs(False)
End If
 isplayDogs()
Case Is = 2
If AddMode = True Or EditMode = True Then
Enable_Vaccination(True)
Else
Enable_Vaccination(False)
End If
 isplayVaccination(0)
End Select
End Sub
Sub Enable_Dogs(ByVal Switch As Boolean)
chkRemoved.Enabled = Switch
.................................
txtWeight.Enabled = Switch
lsvDogs.Enabled = Not Switch
End Sub
Sub DisplayDogs()
SqlStatement = "Select * from " & DogsTable & " Where clientid = '" & ClientID & "' Order By Dog_ID"
connAdapter.SelectCommand.CommandText = SqlStatement
If Not dsDCL.Tables("SelectedDogs" Is Nothing Then
dsDCL.Tables("SelectedDogs".Clear()
End If
connAdapter.SelectCommand.CommandType = CommandType.Text
connAdapter.Fill(dsDCL, "SelectedDogs"
lsvDogs.Items.Clear()
If dsDCL.Tables("SelectedDogs".Rows.Count = 0 Then
litem = lsvDogs.Items.Add(" "
litem.SubItems.Add("No Dogs On File For This Owner"
....................................................
SelDog = 0
Else
 im rowcount As Int16 = dsDCL.Tables("SelectedDogs".Rows.Count
 im rowi As Int16 = 0
For Each drRowDogs In dsDCL.Tables("SelectedDogs".Rows
litem = lsvDogs.Items.Add(drRowDogs.Item("og_ID")
litem.SubItems.Add(drRowDogs.Item("FullName")
..............................................
Next
If AddMode = True Then
SelDog = rowcount - 1
ElseIf EditMode = False Then
SelDog = 0
End If
End If
'lsvDogs.Items(SelDog).ListView.Select()
'lsvDogs.HideSelection = False
lsvDogs.Items(SelDog).Selected = True
'lsvDogs.Focus()
End Sub
Sub Enable_Vaccination(ByVal Switch As Boolean)
chkWalkIn.Enabled = Switch
............................
lsvTags.Enabled = Not Switch
End Sub
Sub DisplayVaccination(ByVal VacID_Ind As Integer)
SqlStatement = "Select * from " & VaccinationTable & " Where clientid = '" & ClientID
SqlStatement &= "' AND dog_id = '" & DogID & "' Order By ClientID, Dog_ID, vacdate, expdate, vacid"
connAdapter.SelectCommand.CommandText = SqlStatement
If Not dsDCL.Tables("VaccinationTable" Is Nothing Then
dsDCL.Tables("VaccinationTable".Clear()
End If
connAdapter.SelectCommand.CommandType = CommandType.Text
connAdapter.Fill(dsDCL, "VaccinationTable"
lsvTags.Items.Clear()
VacInd = 0
If dsDCL.Tables("VaccinationTable".Rows.Count = 0 Then
litem = lsvTags.Items.Add(" "
...............................
litem.SubItems.Add(0)
Else
 im rowcount As Int16 = dsDCL.Tables("VaccinationTable".Rows.Count
For Each drRow In dsDCL.Tables("VaccinationTable".Rows
litem = lsvTags.Items.Add(drRow.Item("TagNumber")
litem.SubItems.Add(drRow.Item("ChargeType")
...............................................
litem.SubItems.Add(drRow.Item("VacID".ToString)
Next
If AddMode = True Then
VacInd = rowcount - 1
End If
End If
'lsvTags.Items(VacInd).ListView.Select()
lsvTags.Items(VacInd).Selected = True
End Sub
Private Sub lsvDogs_ItemSelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.ListViewItemSelectionChangedEventArgs) Handles lsvDogs.ItemSelectionChanged
If e.IsSelected = True Then
SelDog = e.ItemIndex
If dsDCL.Tables("SelectedDogs".Rows.Count = 0 Then
 ogID = ""
txtDogID_pgeDogs.Text = ""
..........................
Else
 ogID = lsvDogs.Items(e.ItemIndex).Text
.......................................
End If
End If
End Sub
Private Sub lsvTags_ItemSelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.ListViewItemSelectionChangedEventArgs) Handles lsvTags.ItemSelectionChanged
If e.IsSelected = True Then
VacInd = e.ItemIndex
If dsDCL.Tables("VaccinationTable".Rows.Count = 0 Then
txtTagNumber.Text = ""
.......................
VacID = 0
Else
txtTagNumber.Text = lsvTags.Items(e.ItemIndex).Text
...........................................
VacID = CInt(lsvTags.Items(e.ItemIndex).SubItems(17).Text)
End If
End If
End Sub
Ответить
|
Номер ответа: 12 Автор ответа: AgentFire
ICQ: 192496851
Вопросов: 75 Ответов: 3178
|
Профиль | | #12
|
Добавлено: 02.09.10 23:23
|
причем тут .net, здесь, на сайте, совсем рядом с кнопкой "сохранить" есть кнопка "код", которая заключит всё вышескопипастенное в нормальные рамки, а именно в тэг SOURCE, ибо выведенное там никто не то чтобы читать, даже скопировать к себе не сможет.
если чем то ВАС обидел, сорокалетний мужчина, прошу прощения, но российский интернет мало знает вежливости, так что привыкайте к "тыканью".
помощь была дана практически сразу - если нужно передать фокус (подсветкой синим элемента листа) - нужно юзать Focus. Если не работает - это ведь не значит что ребята из MS поленились сделать функцию, а значит, что ВЫ ее некорректно юзаете, о чем, кстати, тоже был упомянуто.
также, не имея вменяемого кода на руках (а еще лучше - ссылки на архив с проектом) ничего толкового ВЫ от нас не узнаете, кроме как "юзай Focus" или что-нибудь вроде этого, ибо непонятно, с чем имеем дело.
Ответить
|
Номер ответа: 13 Автор ответа:
Вопросов: 1 Ответов: 26
|
Профиль | | #13
|
Добавлено: 02.09.10 23:40
|
- Private Sub frmDogsAndCats_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- Enable_Owner(False)
- isplayOwner()
- End Sub
-
- Sub Enable_Owner(ByVal Switch As Boolean)
- cmbState.Enabled = Switch
- cmdDeleteOwner.Enabled = Not Switch
- ....................................
- txtZIP.Enabled = Switch
- End Sub
-
- Sub DisplayOwner()
- SqlStatement = "Select * from " & OwnersTable & " Where clientid = '" & ClientID & "'"
- connAdapter.SelectCommand.CommandText = SqlStatement
- If Not dsDCL.Tables("SelectedOwner" Is Nothing Then
- dsDCL.Tables("SelectedOwner".Clear()
- End If
- connAdapter.SelectCommand.CommandType = CommandType.Text
- connAdapter.Fill(dsDCL, "SelectedOwner"
- drRow = dsDCL.Tables("SelectedOwner".Rows(0)
- txtClientID_pgeOwners.Text = ClientID
- ......................
- cmdPrior.Enabled = True
- pgfDogsInfo.SelectedIndex = 0
- pgeOwners.Select()
- End Sub
-
- Private Sub pgfDogsInfo_Selected(ByVal sender As Object, ByVal e As System.Windows.Forms.TabControlEventArgs) Handles pgfDogsInfo.Selected
- Select Case e.TabPageIndex
- Case Is = 1
- If AddMode = True Or EditMode = True Then
- Enable_Dogs(True)
- Else
- Enable_Dogs(False)
- End If
- isplayDogs()
- Case Is = 2
- If AddMode = True Or EditMode = True Then
- Enable_Vaccination(True)
- Else
- Enable_Vaccination(False)
- End If
- isplayVaccination(0)
- End Select
- End Sub
-
- Sub Enable_Dogs(ByVal Switch As Boolean)
- chkRemoved.Enabled = Switch
- .................................
- txtWeight.Enabled = Switch
- lsvDogs.Enabled = Not Switch
- End Sub
-
- Sub DisplayDogs()
- SqlStatement = "Select * from " & DogsTable & " Where clientid = '" & ClientID & "' Order By Dog_ID"
- connAdapter.SelectCommand.CommandText = SqlStatement
- If Not dsDCL.Tables("SelectedDogs" Is Nothing Then
- dsDCL.Tables("SelectedDogs".Clear()
- End If
- connAdapter.SelectCommand.CommandType = CommandType.Text
- connAdapter.Fill(dsDCL, "SelectedDogs"
- lsvDogs.Items.Clear()
- If dsDCL.Tables("SelectedDogs".Rows.Count = 0 Then
- litem = lsvDogs.Items.Add(" "
- litem.SubItems.Add("No Dogs On File For This Owner"
- ....................................................
- SelDog = 0
- Else
- im rowcount As Int16 = dsDCL.Tables("SelectedDogs".Rows.Count
- im rowi As Int16 = 0
- For Each drRowDogs In dsDCL.Tables("SelectedDogs".Rows
- litem = lsvDogs.Items.Add(drRowDogs.Item("og_ID")
- litem.SubItems.Add(drRowDogs.Item("FullName")
- ..............................................
- Next
- If AddMode = True Then
- SelDog = rowcount - 1
- ElseIf EditMode = False Then
- SelDog = 0
- End If
- End If
-
-
- lsvDogs.Items(SelDog).Selected = True
-
- End Sub
-
- Sub Enable_Vaccination(ByVal Switch As Boolean)
- chkWalkIn.Enabled = Switch
- ............................
- lsvTags.Enabled = Not Switch
- End Sub
-
- Sub DisplayVaccination(ByVal VacID_Ind As Integer)
- SqlStatement = "Select * from " & VaccinationTable & " Where clientid = '" & ClientID
- SqlStatement &= "' AND dog_id = '" & DogID & "' Order By ClientID, Dog_ID, vacdate, expdate, vacid"
- connAdapter.SelectCommand.CommandText = SqlStatement
- If Not dsDCL.Tables("VaccinationTable" Is Nothing Then
- dsDCL.Tables("VaccinationTable".Clear()
- End If
- connAdapter.SelectCommand.CommandType = CommandType.Text
- connAdapter.Fill(dsDCL, "VaccinationTable"
- lsvTags.Items.Clear()
- VacInd = 0
- If dsDCL.Tables("VaccinationTable".Rows.Count = 0 Then
- litem = lsvTags.Items.Add(" "
- ...............................
- litem.SubItems.Add(0)
- Else
- im rowcount As Int16 = dsDCL.Tables("VaccinationTable".Rows.Count
- For Each drRow In dsDCL.Tables("VaccinationTable".Rows
- litem = lsvTags.Items.Add(drRow.Item("TagNumber")
- litem.SubItems.Add(drRow.Item("ChargeType")
- ...............................................
- litem.SubItems.Add(drRow.Item("VacID".ToString)
- Next
- If AddMode = True Then
- VacInd = rowcount - 1
- End If
- End If
-
- lsvTags.Items(VacInd).Selected = True
- End Sub
-
- Private Sub lsvDogs_ItemSelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.ListViewItemSelectionChangedEventArgs) Handles lsvDogs.ItemSelectionChanged
- If e.IsSelected = True Then
- SelDog = e.ItemIndex
- If dsDCL.Tables("SelectedDogs".Rows.Count = 0 Then
- ogID = ""
- txtDogID_pgeDogs.Text = ""
- ..........................
- Else
- ogID = lsvDogs.Items(e.ItemIndex).Text
- .......................................
- End If
- End If
- End Sub
-
- Private Sub lsvTags_ItemSelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.ListViewItemSelectionChangedEventArgs) Handles lsvTags.ItemSelectionChanged
- If e.IsSelected = True Then
- VacInd = e.ItemIndex
- If dsDCL.Tables("VaccinationTable".Rows.Count = 0 Then
- txtTagNumber.Text = ""
- .......................
- VacID = 0
- Else
- txtTagNumber.Text = lsvTags.Items(e.ItemIndex).Text
- ...........................................
- VacID = CInt(lsvTags.Items(e.ItemIndex).SubItems(17).Text)
- End If
- End If
- End Sub
-
-
- Module modDogLicense
- Public connString As String = "ata Source=ssssssss; Initial Catalog=DogLicense; Integrated Security=nnnn;"
- im QueryDCL As String
- Public connDCL As New SqlConnection(connString)
- Public connOwner As New SqlConnection(connString)
- Public connAdapter As New SqlDataAdapter(QueryDCL, connDCL)
- Public dsDCL As New DataSet
- Public drRow As DataRow
- Public drRowDogs As DataRow
- Public drRowVac As DataRow
- Public SqlCommand As New SqlCommand
- Public AddMode As Boolean
- Public ClientID As String = ""
- Public DogID As String
- Public DogsTable As String
- Public EditMode As Boolean
- Public OwnersTable As String
- Public SqlStatement As String
- Public VaccinationTable As String
- Public VacID As Integer
-
- Sub Main()
- OwnersTable = "CLDogOwners"
- ogsTable = "CLDogs"
- VaccinationTable = "CLVaccination"
-
- SqlCommand.Connection = connDCL
- connDCL.Open()
- End Sub
Ответить
|
Страница: 1 | 2 | 3 | 4 |
Поиск по форуму