ListView: položka vždy vidět

Kdykoliv se ListViewItems přidávají nové položky do ovládací prvek ListView, a ty jsou tak četné, že kontrola nemá dostatek prostoru pro jejich zobrazení na obrazovce, přidejte svislý posuvník. To je perfektní, jen ve výchozím nastavení, které nové položky.

Dnes vám chci ukázat, jak vyřešit tento malý problém.

Visual Basic ovládací prvky. Net kužel ListView nám ohromným množstvím užitečných vlastností pro konfiguraci, takže často není znám.

Ukážu jednoduchý příklad. K tomu potřebujeme formulář, ovládací prvek ListView a tlačítko.

listviewItemSiempreVisible001

Vlastnosti, které nás zajímají, jsou:

  • HideSelection: nastavte na hodnotu false, takže i když ovládací prvek ListView nemá zaměření, budeme i nadále, co vybrané položky.
  • ListView1.FocusedItem.EnsureVisible () vynutit vybrané položky musí být vždy viditelné.

No, teď v případě, že kód:

     Private Sub Form1_Load (ByVal odesílatel jako System.Object, ByVal e jako System.EventArgs) Madla MyBase.Load
         ListView1.HideSelection = False
         ListView1.FullRowSelect = True
         ListView1.MultiSelect = False
     End Sub

     Private Sub Button1_Click (ByVal odesílatel jako System.Object, ByVal e jako System.EventArgs) Madla Button1.Click
         Statické i As Integer = 0
         i + = 1
         ListView1.Items.Add (New ListViewItem ("Pořadové číslo položky" & i))
         ListView1.Items (ListView1.Items.Count - 1). Vybraný = True
         ListView1.Items (ListView1.Items.Count - 1). Zaostřeno = True

         ListView1.FocusedItem.EnsureVisible ()
     End Sub

Po spuštění by měla vypadat velmi podobně, která je uvedena v tomto obrázku:

listviewItemSiempreVisible002

To je vše, pokud tyto informace vám pomohl, prosím, napsat komentář.

11 Responses to "Listview: položka vždy navrchu"

  1. Bitacoras.com říká:

    Bitacoras.com informace ...

    Míra Bitacoras.com: Pokud jsou ListViewItems přidávají nové položky do ovládací prvek ListView, a ty jsou tak četné, že kontrola nemá dostatek prostoru pro jejich zobrazení na obrazovce, přidejte svislý posuvník. To je ... ..

  2. MYSTIC řekl:

    No všichni víme, q pro zobrazení dat, ale moje q mě zajímá, pokud mohou vysvětlit, jak je modul uložen v programu jsou řezané aunq

  3. RCHARD říká:

    Například jeden stejnou otázku, ale já chci vědět, jestli DataGridView by mohlo pomoci v tomto problému

    Můj e-
    richardramos789@hotmail.com
    Ty by se Vám vděčný, kdybyste HELP ME

  4. Jorge říká:

    Dobrý den, takové,

    Podívejte se mám pochybnost ListView realizovat v mém systému, jsem dávat dohromady systém, POS a zadání kódu na mé txtbox úspěchu ve své tiskové ListView správně, moje otázka je, že chci nahrávat, když na stejný výrobek, spíše než přidání nového řádek, který zní, a ve sloupci Množství zvýší počet.

    Například, pokud přidám 12345, je vytištěn v mém ListView, ale když přidám 12345 umístit tisk na nový řádek je vytištěn v řadě, ale tato částka se zvyšuje na sloupci 2, pokud jsem se vysvětlit, nebo by mohl vést mě v této otázce, že jsem si já bych ocenil.

    • Elizeus řekl:

      není mi jasné, co chtějí dělat, ale doporučuji vám podívat se na tento příklad vám mohou být užitečné: http://www.solovb.net/index.php/2009/02/19/modificar-datos- za-ListView /
      Jakékoli další otázky, neváhejte mě kontaktovat.

      S pozdravem

    • Oscar říká:

      Ahoj Georgi, co žádáte zahrnuje datové persistence a aktualizaci sloupce, které patří k řadě specifických klíče v tabulce 2 řešení si můžete vybrat: nejprve vytvoříte DB s poli, které potřebujete, a použití MySQL připojení buď pomocí adaptéru, nebo součástí SQL Server Visual Studio, na druhou stranu je prostřednictvím textových souborů uložených v datovém souboru. txt a pak pokračujte ve čtení a přepisování některých údajů Pro obě možnosti je třeba zvýšit hodnotu pro sloupec rewquerida, měli byste také použít funkci, která tuto hodnotu zvýšit na základě podmínek, které potřebujete. :)

  5. Jorge říká:

    Elizeus moc děkuji za rychlou odpověď.

    Ok vypadat já ti to vysvětlím. Mám textové pole, ve kterém jsem přidat produkty mám v DB, ok například Coca-Cola, zadejte čárový kód na své textové pole v tomto případě by bylo 12345678, dobré představení v mém ListView popisu výrobku svým sloupci ListView jsou:

    Kód produktu, popis, množství, prodejní ceny, Existence.

    Poté přidejte přípravek na mé linie je plný takových údajů ve svém ListView, ale když jsem znovu vložte kód Coca-Cola, je uveden v následující řadě, kterou jsem chtěl udělat, je, že při vložení jiného Jakmile na místě stejného výrobku zobrazí v novém řádku, stačí změnit počet kusů můj sloupek, v tomto případě výměny až 2.

    To je víc, než chci udělat nd, jestli bych mohl říct, víceméně odpověď na tuto otázku bych si toho vážím.

    Díky

    • Elizeus řekl:

      No, teď je o něco lehčí.

      První věc, kterou si před vložením nového řádku je přes ListView zkontrolovat, zda jste již zadali kód, který se pokoušíte vložit.
      Že si s pro každého, například

      "Myslím, že proměnné, aby mi v případě, že kód a zjistil, že tam byl
      Dim existuje jako Boolean = False
      Pro každou položku ListViewItem v listviewProductos.items
      Pak-li item.text = txtCodigo.text
      "Pokud jste sem přišel proto, že byl již načten
      cantidadAnterior dim As Integer = CType (item.subitm (2). text, celé číslo)
      item.subitem (2). cantidadAnterior + text = CType (txtCantidad.text, Integer)
      "Když si všimnete, že našel to už existovalo
      Tam = True
      End If
      Další

      Pokud ne, tak tam
      "Tady jsem ale zjistil, vložte
      End If

      No, Espro sloužit ... nemůžete vyloučit překlep Golde, co jsem napsal přímo zde

      Ale určitě bude sloužit

  6. Jorge říká:

    Ještě jednou díky,

    Podívej se na mě poznamenal, že v případě, že výsledek v otázce dal ke změně hodnoty množství sloupců, co se stane je, že jsem získávání hodnoty z databáze MySQL se dívá na kód, který jsem vám ukázat, jak tisknout mé ListView

    ListView Private Sub ()
    Dim i As Integer
    Dim s As Integer
    Dim se počítají jako Integer
    Mezisoučet As Double Dim
    Dim seznam As New ListViewItem

    As New MySqlCommand řetězec Dim ("SELECT * FROM produktů Pokud ProductCode = '" & txtCodigoBarras.Text & "'", kon)

    cadena.ExecuteReader mysqldr = ()

    Zatímco mysqldr.Read ()
    list = listView1.Items.Add (txtCodigoBarras.Text.Trim)
    listar.SubItems.Add (CStr (mysqldr ("popis")))
    listar.SubItems.Add (CStr (mysqldr ("Množství")))
    listar.SubItems.Add (CStr (mysqldr ("PrecioVenta")))
    listar.SubItems.Add (CStr (mysqldr ("akcie")))
    Zatímco konec

    Dim existuje jako Boolean = False

    Pro každou položku ListViewItem V ListView1.Items
    Pokud se pak txtCodigoBarras.Text item.Text =
    CantidadAnterior As Integer Dim = CType (listar.SubItems (2). Text, Integer)
    listar.SubItems (2). cantidadAnterior + Text = CType (mysqldr ("Množství"), Integer)
    Tam = True
    End If
    Další
    Pokud ne, tak tam
    End If

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

    Pro s = 0,0 až ListView1.Items.Count - 1
    Mezisoučet = Mezisoučet + ListView1.Items (s). Podpoložky (3). Text
    Další
    lbLSubTotal.Text = "$" & Format (mezisoučet, "0.00")

    Pro i = 0 To ListView1.Items.Count - 1
    Counter = pult + ListView1.Items (i). podpoložky (2). Text
    Další
    Me.lblContador.Text = čítač

    mysqldr.Close ()
    End Sub

    Strávil jsem kód, který implementuje dobře a vidět výsledky v následující fotografie:

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

  7. Jorge říká:

    Haha přítel se omlouvám, jestli to vadí tolik otázek, ale já jsem najít více či méně problémů, zavedení výrobku, např.

    DORITOSNAC

    Je vložen v první řadě, a když jsem dal DORITOSNAC je vytištěna na druhé řady, ale už představil první změní, od kvantity ke 2 a vstoupit znovu je vytištěna opět v 3 řadě, ale stejně 1 řádek změní hodnotu na 3

    Pokud se pak txtCodigoBarras.Text txtCodigoBarras.Text =
    Dim existuje jako Boolean = False
    Pro každou položku ListViewItem V ListView1.Items
    Pokud se pak txtCodigoBarras.Text item.Text =
    CantidadAnterior As Integer Dim = CType (item.SubItems (2). Text, Integer)
    item.SubItems (2). cantidadAnterior + Text = CType (lblCantidadProd.Text, Integer)
    Tam = True
    End If
    Další
    Pokud ne, tak tam
    End If

    Uvidíme, jestli jsem si to teď, ne-li žádné vysvětlení z vaší strany bude vděčný.

  8. Jorge říká:

    již řeší mnoho Díky za podporu získat řešení:

    Dim se počítají jako Integer
    Pro j As Integer = 0 To Me.ListView1.Items.Count - 1
    Pokud se Me.ListView1.Items (j). Podpoložky (0). TxtCodigoBarras.Text Poté Text =
    count = CInt (Me.ListView1.Items (j). podpoložky (2). textu) + 1
    Me.ListView1.Items (j). Podpoložky (2). Text = počet
    Exit Sub

Komentář