Listview: Pozycja zawsze widoczny

Kiedykolwiek dodać nowe elementy do ListViewItems listview kontroli, a te są tak liczne, że kontrola nie ma wystarczającej ilości miejsca, aby wyświetlić je na ekranie, dodając pionowy pasek przewijania. To jest doskonały, z wyjątkiem, że domyślnie nie są, że nowe elementy zostaną dodane.

Dziś chcę pokazać jak rozwiązać ten mały problem.

Visual Basic kontrole. Stożek netto ListView nam imponujący wachlarz właściwości konfiguracji, tak że często nie są znane.

Chcę pokazać prosty przykład. Do tego potrzebujemy formularza, formantu ListView i przycisk.

listviewItemSiempreVisible001

Właściwości, które najbardziej interesują nas są:

  • HideSelection: Ustawienie na false, jeśli nie ma kontroli listview ma fokus, nadal by zobaczyć, co wybrany element.
  • ListView1.FocusedItem.EnsureVisible (), aby wymusić wybrana pozycja być zawsze widoczne.

Cóż, teraz jeśli kod:

     Private Sub Form1_Load (ByVal sender Jak System.Object i ByVal e As System.EventArgs) Handles MyBase.Load
         ListView1.HideSelection = False
         ListView1.FullRowSelect = True
         ListView1.MultiSelect = False
     End Sub

     Private Sub Button1_Click (ByVal sender Jak System.Object i ByVal e As System.EventArgs) Handles Button1.Click
         Statyczne i As Integer = 0
         i + = 1
         ListView1.Items.Add (New ListViewItem ("Numer pozycji" & i))
         ListView1.Items (ListView1.Items.Count - 1). Selected = true
         ListView1.Items (ListView1.Items.Count - 1). Koncentruje = True

         ListView1.FocusedItem.EnsureVisible ()
     End Sub

Bieganie powinno to wyglądać podobnie jak to, co jest pokazane w tym obrazie:

listviewItemSiempreVisible002

To wszystko, jeśli ta informacja pomogła Ci, proszę zostawić komentarz.

11 Responses to "ListView: pozycja zawsze na wierzchu"

  1. Bitacoras.com mówi:

    Informacje Bitacoras.com ...

    Kurs w Bitacoras.com: Kiedy dodać nowe elementy do ListViewItems listview kontroli, a te są tak liczne, że kontrola nie ma wystarczającej ilości miejsca, aby wyświetlić je na ekranie, dodając pionowy pasek przewijania. To jest .....

  2. MYSTIC powiedział:

    Dobrze wszyscy wiemy, q, aby wyświetlić dane, ale q Jestem zainteresowany czy może wyjaśnić w jaki sposób są przechowywane w module to piłowanie Program aunq

  3. RCHARD mówi:

    PYTANIE chcę tego samo, ale w DataGridView Przykład Jeśli nie może mi pomóc W NUMERZE

    My Email:
    richardramos789@hotmail.com
    Chcesz być wdzięczny, jeśli możesz mi pomóc

  4. Jorge mówi:

    Witam takie,

    Spójrz Mam wątpliwości z listview do wdrożenia w moim systemie, mam stworzenia systemu POS i wprowadź kod w moim osiągnięciem txtbox w moim druku listview poprawnie, moje pytanie jest, że chcę przy rejestracji tego samego produktu, raczej niż dodając nowy wiersz dodaje do niej i w kolumnie Ilość zwiększy liczbę.

    Na przykład jeśli dodać 12345, drukowany jest w moim ListView, ale jeśli dodać 12345 umieścić wydruk na nowy wiersz jest drukowany w jednym rzędzie, ale w wysokości kolumny wzrasta do 2 nie, jeśli wyjaśnię lub może poprowadzi mnie w tej kwestii, że mam bym bardzo wdzięczny.

    • Elizeusz mówi:

      Ja nie bardzo wiadomo, co chcesz zrobić, ale sugerują, że patrzysz na ten przykład może być pomocne: http://www.solovb.net/index.php/2009/02/19/modificar-datos- z-a-listview /
      Wszelkie dalsze pytania, nie wahaj się ze mną skontaktować.

      Pozdrawiam

    • Oscar mówi:

      Witaj George, o co prosisz wymaga wytrwałości danych i zaktualizować kolumnę należącej do rangi określonego klucza w tabeli o 2 rozwiązań można wybrać: najpierw utworzyć DB z pól, które potrzebują i korzystać połączenie zarówno z MySQL za pomocą zasilacza dla niego lub SQL Server wchodzi w skład Visual Studio, Innym sposobem jest poprzez płaskich plików zapisywania danych w pliku. txt a następnie przejdź do czytania i przepisywania niektórych danych , dla obu opcji, jak trzeba zwiększyć wartość dla rewquerida kolumny, należy również zastosować funkcję do zwiększenia tej wartości na podstawie warunku wymaga. :)

  5. Jorge mówi:

    Elizeusz dziękuję bardzo za szybką odpowiedź.

    Ok wyglądać wytłumaczę. Mam TextBox w którym dodać produkty mam w DB, ok np. Coca-cola, to wprowadzić kod kreskowy na moim TextBox w tym przypadku byłoby 12345678, dobry pokaz w moim ListView opisu produktu z moich kolumn listview są:

    Kod produktu, opis, ilość, cena sprzedaży, Existence.

    Następnie dodać produkt do mojego wiersza jest pełen takich danych w moim ListView, ale gdybym ponownie wstawić kod coca-cola, jest pokazany w następnym wierszu, co chciałbym zrobić, to że po włożeniu innej Gdy sam produkt, a nie w nowym wierszu, wystarczy zmienić numer mojego Ilość kolumn, w tym wypadku do wymiany 2.

    To więcej niż ND chcę zrobić, gdybym mógł powiedzieć mniej więcej odpowiedzieć na to pytanie będę wdzięczny.

    Dzięki

    • Elizeusz mówi:

      Cóż, teraz jest trochę lżejszy.

      Pierwszą rzeczą, którą należy przed włożeniem nowej linii jest krzyż listview, by sprawdzić, jeśli już wprowadziłeś kod, który próbujesz wstawić.
      Że robisz A dla każdego, na przykład

      "Myślę, że zmienna, aby wskazać, czy znalazłem kod już istnieje
      Dim istnieje jako Boolean = false
      Dla każdej pozycji jako ListViewItem w listviewProductos.items
      Następnie, jeśli item.text = txtCodigo.text
      "Jeśli się tutaj, ponieważ jest już załadowany
      cantidadAnterior słabe As Integer znaku = Ctype ust item.subitm (2). tekst, Integer)
      item.subitem (2). cantidadAnterior + text = CType (txtCantidad.text, Integer)
      "Jeśli uważasz, można zauważyć, że istniał już
      istnieje = true
      end if
      Następny

      Jeśli nie, to tam
      "Tu nie występuje następnie włóż
      End If

      Cóż, espronet służyć ... nie można wykluczyć literówka Terner ponieważ napisałem go bezpośrednio tutaj

      Ale na pewno będzie służyć

  6. Jorge mówi:

    Jeszcze raz dziękuję,

    Do zobaczenia powiedział, że gdybym pracował w tej kwestii poprzez zmianę wartości w kolumnie Ilość, co się dzieje, jestem wydobywania wartości z bazy danych MySQL pokażę wygląda kod wydrukować listview

    Listview Private Sub ()
    Dim i As Integer
    Dim s As Integer
    Dim liczba As Integer
    Razem Dim As Double
    Dim list As New ListViewItem

    As New Dim ciąg MySqlCommand ("SELECT * FROM produkty WHERE ProductCode = '" & txtCodigoBarras.Text & "'", con)

    cadena.ExecuteReader mysqldr = ()

    Podczas mysqldr.Read ()
    list = listView1.Items.Add (txtCodigoBarras.Text.Trim)
    listar.SubItems.Add (CStr (mysqldr ("Opis")))
    listar.SubItems.Add (CStr (mysqldr ("Ilość")))
    listar.SubItems.Add (CStr (mysqldr ("PrecioVenta")))
    listar.SubItems.Add (CStr (mysqldr ("fotografii")))
    Koniec Podczas

    Dim istnieje jako Boolean = false

    Na każdy element jako ListViewItem W ListView1.Items
    Następnie, jeśli item.Text = txtCodigoBarras.Text
    CantidadAnterior Dim As Integer znaku = CType (listar.SubItems (2). Tekstowe, Integer)
    listar.SubItems (2). Text = cantidadAnterior + CType (mysqldr ("Ilość"), Integer)
    istnieje = true
    End If
    Następny
    Jeśli nie, to tam
    End If

    lblCantidadProd.Text = mysqldr.Item (3)
    lblPrecioUnidad.Text = mysqldr.Item (5)

    Dla s = 0,0 W ListView1.Items.Count - 1
    Razem znaku = Razem znak + ListView1.Items (y). Elementów składowych (3). Tekstowe
    Następny
    lbLSubTotal.Text = "$" & Format (Razem "0,00")

    For i = 0 do ListView1.Items.Count-1
    licznik = licznik + ListView1.Items (i). elementów składowych (2). Tekst
    Następny
    Me.lblContador.Text = licznik

    mysqldr.Close ()
    End Sub

    Kod, który spędziłem więc wdrożyć go i zobaczyć wyniki w poniższej fotografii:

    http://img193.imageshack.us/img193/4421/productosv.jpg~~V

  7. Jorge mówi:

    Przyjaciel haha ​​przepraszam jeśli zdenerwowany pytaniami tak wielu, ale widzę, że mniej lub bardziej ten problem, na przykład wprowadzenie produktu

    DORITOSNAC

    Jest umieszczony w pierwszym rzędzie i kiedy mogę umieścić DORITOSNAC jest wydrukowany na drugiej pozycji, ale już wcześniej wprowadził pierwsze zmiany jego wartości od ilości do 2 i jest drukowana z powrotem wejść ponownie na 3 rzędzie, ale równie od 1 rzędzie zmienia swoją wartość do 3

    Następnie, jeśli txtCodigoBarras.Text = txtCodigoBarras.Text
    Dim istnieje jako Boolean = false
    Na każdy element jako ListViewItem W ListView1.Items
    Następnie, jeśli item.Text = txtCodigoBarras.Text
    CantidadAnterior Dim As Integer znaku = CType (item.SubItems (2). Tekstowe, Integer)
    item.SubItems (2). Text = cantidadAnterior + CType (lblCantidadProd.Text, Integer)
    istnieje = true
    End If
    Następny
    Jeśli nie, to tam
    End If

    Zobaczymy, czy mogę go teraz, jeśli nie roznieca z Twojej strony będzie wdzięczny.

  8. Jorge mówi:

    już osiągnięty rozwiązać Serdecznie dziękujemy za wsparcie uzyskać rozwiązanie:

    Dim liczba As Integer
    Dla j As Integer = 0 Aby Me.ListView1.Items.Count - 1
    Jeśli Me.ListView1.Items j). Elementów składowych (0). Następnie Text = txtCodigoBarras.Text
    count = CInt (Me.ListView1.Items (j). elementów składowych (2). Tekst) + 1
    Me.ListView1.Items j). Elementów składowych (2). Text = count
    Exit Sub

Komentarz