Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 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)
Пожалуйста, помогите!

Ответить

  Ответы Всего ответов: 46  

Номер ответа: 1
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #1 Добавлено: 02.09.10 00:22
  1. Me.ListView1.HideSelection = False

Ответить

Номер ответа: 2
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #2 Добавлено: 02.09.10 08:09
хайлатиться - подсвечиваться.
плюс к первому посту могу посоветовать перекидывать фокус
  1. lsvDogs.Focus()
нежели включать вышеописанное свойство

Ответить

Номер ответа: 3
Автор ответа:
 



Вопросов: 1
Ответов: 26
 Профиль | | #3 Добавлено: 02.09.10 15:16
Алексей,
Спасибо за ответ. К сожалению, Ваш вариант тоже не работает. Focus я уже пробовал раньше - не работает. А вот HideSelection на пару с моим Select даёт интересный результат: видно, что строка подсвечивается (спасибо за перевод), но не обычным синим цветом, а серым.
Меня смущают две вещи:
1. В обоих TabPages я использовал одинаковые коды (включая ItemSelectionChanged events), но результат разный
2. У меня есть форма, в которой у меня нет TabControl, и в которой я также использую ListView. Так вот, когда я запускаю debug, в этой форме программа проходит через ItemSelectionChanged только один раз, а в форме с TabControl - трижды (в обеих TabPages). Может быть, это особенности TabControl?

Ответить

Номер ответа: 4
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #4 Добавлено: 02.09.10 16:41
На кофейной гуще гадать никто не будет. Телепаты, в лице Eros-а и Artyom-а, похоже в отпуске.
Выложи или проверь сам код который заполняет листВью. Если у листВью есть датасорс, то селекшен будет меняться несколько раз. Возможно ты где-то ещё накосячил.

Ответить

Номер ответа: 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)
        ;DisplayOwner()
    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
                ;DisplayDogs()
            Case Is = 2
                If AddMode = True Or EditMode = True Then
                    Enable_Vaccination(True)
                Else
                    Enable_Vaccination(False)
                End If
                ;DisplayVaccination(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
            ;Dim rowcount As Int16 = dsDCL.Tables("SelectedDogs";).Rows.Count
            ;Dim rowi As Int16 = 0
            For Each drRowDogs In dsDCL.Tables("SelectedDogs";).Rows
                litem = lsvDogs.Items.Add(drRowDogs.Item(";Dog_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
            ;Dim 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
                ;DogID = ""
                txtDogID_pgeDogs.Text = ""
                ..........................
            Else
                ;DogID = 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

Ответить

Номер ответа: 6
Автор ответа:
 



Вопросов: 1
Ответов: 26
 Профиль | | #6 Добавлено: 02.09.10 17:41
Здесь - коды из главного модуля

Module modDogLicense
    Public connString As String = ";Data Source=ssssssss; Initial Catalog=DogLicense; Integrated Security=nnnn;"
    ;Dim 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 = ";DCLDogOwners"
        ;DogsTable = ";DCLDogs"
        VaccinationTable = ";DCLVaccination"
        ' Open connection and Read Users Table to check for authorized user
        SqlCommand.Connection = connDCL
        connDCL.Open()
    End Sub

Ответить

Номер ответа: 7
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #7 Добавлено: 02.09.10 19:06
о боже. ты слеп? используй тэг source

Ответить

Номер ответа: 8
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #8 Добавлено: 02.09.10 19:06
Focus работает. используй правильно

Ответить

Номер ответа: 9
Автор ответа:
 



Вопросов: 1
Ответов: 26
 Профиль | | #9 Добавлено: 02.09.10 19:18
А можно не так грубо в словах и конкретнее в кодах? Я не знаю, что такое тэг source. Я же сказал, что я - новичок в .NET
Если Вы не желаете помогать, лучше не пишите. И не надо мне "тыкать" Тем более, что я раза в два старше Вас.

Ответить

Номер ответа: 10
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #10 Добавлено: 02.09.10 21:45
И не надо мне "тыкать" Тем более, что я раза в два старше Вас.
Тебе что, 84?

Ответить

Номер ответа: 11
Автор ответа:
 



Вопросов: 1
Ответов: 26
 Профиль | | #11 Добавлено: 02.09.10 21:53
Значит, в полтора.
И потом... Это был ответ на грубость. Что за вопрос: "Ты что, слепой?" Нет, я не слепой, я просто не знаю .NET так хорошо, как знает кто-то другой. По крайней мере, когда ко мне обращаются с просьбой помочь (а программирую я уже более 30-ти лет), я так не отвечаю.
Ну так что, ждать мне помощи от Вас или порыскать по другим форумам?

Ответить

Номер ответа: 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
  1. Private Sub frmDogsAndCats_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2.         Enable_Owner(False)
  3.         isplayOwner()
  4.     End Sub
  5.  
  6.    Sub Enable_Owner(ByVal Switch As Boolean)
  7.         cmbState.Enabled = Switch
  8.         cmdDeleteOwner.Enabled = Not Switch
  9.         ....................................
  10.         txtZIP.Enabled = Switch
  11.     End Sub
  12.  
  13.     Sub DisplayOwner()
  14.         SqlStatement = "Select * from " & OwnersTable & " Where clientid = '" & ClientID & "'"
  15.         connAdapter.SelectCommand.CommandText = SqlStatement
  16.         If Not dsDCL.Tables("SelectedOwner" Is Nothing Then
  17.             dsDCL.Tables("SelectedOwner".Clear()
  18.         End If
  19.         connAdapter.SelectCommand.CommandType = CommandType.Text
  20.         connAdapter.Fill(dsDCL, "SelectedOwner"
  21.         drRow = dsDCL.Tables("SelectedOwner".Rows(0)
  22.         txtClientID_pgeOwners.Text = ClientID
  23.         ......................
  24.         cmdPrior.Enabled = True
  25.         pgfDogsInfo.SelectedIndex = 0
  26.         pgeOwners.Select()
  27.     End Sub
  28.  
  29.    Private Sub pgfDogsInfo_Selected(ByVal sender As Object, ByVal e As System.Windows.Forms.TabControlEventArgs) Handles pgfDogsInfo.Selected
  30.         Select Case e.TabPageIndex
  31.             Case Is = 1
  32.                 If AddMode = True Or EditMode = True Then
  33.                     Enable_Dogs(True)
  34.                 Else
  35.                     Enable_Dogs(False)
  36.                 End If
  37.                 isplayDogs()
  38.             Case Is = 2
  39.                 If AddMode = True Or EditMode = True Then
  40.                     Enable_Vaccination(True)
  41.                 Else
  42.                     Enable_Vaccination(False)
  43.                 End If
  44.                 isplayVaccination(0)
  45.         End Select
  46.     End Sub
  47.  
  48.     Sub Enable_Dogs(ByVal Switch As Boolean)
  49.         chkRemoved.Enabled = Switch
  50.         .................................
  51.         txtWeight.Enabled = Switch
  52.         lsvDogs.Enabled = Not Switch
  53.     End Sub
  54.  
  55.     Sub DisplayDogs()
  56.         SqlStatement = "Select * from " & DogsTable & " Where clientid = '" & ClientID & "' Order By Dog_ID"
  57.         connAdapter.SelectCommand.CommandText = SqlStatement
  58.         If Not dsDCL.Tables("SelectedDogs" Is Nothing Then
  59.             dsDCL.Tables("SelectedDogs".Clear()
  60.         End If
  61.         connAdapter.SelectCommand.CommandType = CommandType.Text
  62.         connAdapter.Fill(dsDCL, "SelectedDogs"
  63.         lsvDogs.Items.Clear()
  64.         If dsDCL.Tables("SelectedDogs".Rows.Count = 0 Then
  65.             litem = lsvDogs.Items.Add(" "
  66.             litem.SubItems.Add("No Dogs On File For This Owner"
  67.             ....................................................
  68.             SelDog = 0
  69.         Else
  70.             im rowcount As Int16 = dsDCL.Tables("SelectedDogs".Rows.Count
  71.             im rowi As Int16 = 0
  72.             For Each drRowDogs In dsDCL.Tables("SelectedDogs".Rows
  73.                 litem = lsvDogs.Items.Add(drRowDogs.Item("og_ID")
  74.                 litem.SubItems.Add(drRowDogs.Item("FullName")
  75.                 ..............................................
  76.             Next
  77.             If AddMode = True Then
  78.                 SelDog = rowcount - 1
  79.             ElseIf EditMode = False Then
  80.                 SelDog = 0
  81.             End If
  82.         End If
  83.         'lsvDogs.Items(SelDog).ListView.Select()
  84.         'lsvDogs.HideSelection = False
  85.         lsvDogs.Items(SelDog).Selected = True
  86.         'lsvDogs.Focus()
  87.     End Sub
  88.  
  89.     Sub Enable_Vaccination(ByVal Switch As Boolean)
  90.         chkWalkIn.Enabled = Switch
  91.         ............................
  92.         lsvTags.Enabled = Not Switch
  93.     End Sub
  94.  
  95.     Sub DisplayVaccination(ByVal VacID_Ind As Integer)
  96.         SqlStatement = "Select * from " & VaccinationTable & " Where clientid = '" & ClientID
  97.         SqlStatement &= "' AND dog_id = '" & DogID & "' Order By ClientID, Dog_ID, vacdate, expdate, vacid"
  98.         connAdapter.SelectCommand.CommandText = SqlStatement
  99.         If Not dsDCL.Tables("VaccinationTable" Is Nothing Then
  100.             dsDCL.Tables("VaccinationTable".Clear()
  101.         End If
  102.         connAdapter.SelectCommand.CommandType = CommandType.Text
  103.         connAdapter.Fill(dsDCL, "VaccinationTable"
  104.         lsvTags.Items.Clear()
  105.         VacInd = 0
  106.         If dsDCL.Tables("VaccinationTable".Rows.Count = 0 Then
  107.             litem = lsvTags.Items.Add(" "
  108.             ...............................
  109.             litem.SubItems.Add(0)
  110.         Else
  111.             im rowcount As Int16 = dsDCL.Tables("VaccinationTable".Rows.Count
  112.             For Each drRow In dsDCL.Tables("VaccinationTable".Rows
  113.                 litem = lsvTags.Items.Add(drRow.Item("TagNumber")
  114.                 litem.SubItems.Add(drRow.Item("ChargeType")
  115.                 ...............................................
  116.                 litem.SubItems.Add(drRow.Item("VacID".ToString)
  117.             Next
  118.             If AddMode = True Then
  119.                 VacInd = rowcount - 1
  120.             End If
  121.         End If
  122.         'lsvTags.Items(VacInd).ListView.Select()
  123.         lsvTags.Items(VacInd).Selected = True
  124.     End Sub
  125.  
  126.     Private Sub lsvDogs_ItemSelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.ListViewItemSelectionChangedEventArgs) Handles lsvDogs.ItemSelectionChanged
  127.         If e.IsSelected = True Then
  128.             SelDog = e.ItemIndex
  129.             If dsDCL.Tables("SelectedDogs".Rows.Count = 0 Then
  130.                 ogID = ""
  131.                 txtDogID_pgeDogs.Text = ""
  132.                 ..........................
  133.             Else
  134.                 ogID = lsvDogs.Items(e.ItemIndex).Text
  135.                 .......................................
  136.             End If
  137.         End If
  138.     End Sub
  139.  
  140.     Private Sub lsvTags_ItemSelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.ListViewItemSelectionChangedEventArgs) Handles lsvTags.ItemSelectionChanged
  141.         If e.IsSelected = True Then
  142.             VacInd = e.ItemIndex
  143.             If dsDCL.Tables("VaccinationTable".Rows.Count = 0 Then
  144.                 txtTagNumber.Text = ""
  145.                 .......................
  146.                 VacID = 0
  147.             Else
  148.                 txtTagNumber.Text = lsvTags.Items(e.ItemIndex).Text
  149.                 ...........................................
  150.                 VacID = CInt(lsvTags.Items(e.ItemIndex).SubItems(17).Text)
  151.             End If
  152.         End If
  153.     End Sub
  154.  
  155.  
  156. Module modDogLicense
  157.     Public connString As String = "ata Source=ssssssss; Initial Catalog=DogLicense; Integrated Security=nnnn;"
  158.     im QueryDCL As String
  159.     Public connDCL As New SqlConnection(connString)
  160.     Public connOwner As New SqlConnection(connString)
  161.     Public connAdapter As New SqlDataAdapter(QueryDCL, connDCL)
  162.     Public dsDCL As New DataSet
  163.     Public drRow As DataRow
  164.     Public drRowDogs As DataRow
  165.     Public drRowVac As DataRow
  166.     Public SqlCommand As New SqlCommand
  167.     Public AddMode As Boolean
  168.     Public ClientID As String = ""
  169.     Public DogID As String
  170.     Public DogsTable As String
  171.     Public EditMode As Boolean
  172.     Public OwnersTable As String
  173.     Public SqlStatement As String
  174.     Public VaccinationTable As String
  175.     Public VacID As Integer
  176.  
  177.     Sub Main()
  178.         OwnersTable = "CLDogOwners"
  179.         ogsTable = "CLDogs"
  180.         VaccinationTable = "CLVaccination"
  181.         ' Open connection and Read Users Table to check for authorized user
  182.         SqlCommand.Connection = connDCL
  183.         connDCL.Open()
  184.     End Sub  

Ответить

Номер ответа: 14
Автор ответа:
 



Вопросов: 1
Ответов: 26
 Профиль | | #14 Добавлено: 02.09.10 23:47
Вот теперь - понятно... мне.
Я нажимал на код, но не увидел никаких изменений. Оказывается, оно переходит в код только после того, как сохраняется...
Многоточия я ставил, чтобы показать, что пропускал одинаковые коды (заполнить ListView или Boxes).
И мне 62, а не 40 (я же ответил на вопрос о 84 - в полтора раза). Но это - так, безотносительно к программированию и данной проблемы.

Ответить

Номер ответа: 15
Автор ответа:
 



Вопросов: 1
Ответов: 26
 Профиль | | #15 Добавлено: 02.09.10 23:48
... проблеме

Ответить

Страница: 1 | 2 | 3 | 4 |

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



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