Listview: întotdeauna vizibil Postul

Ori de câte ori se adaugă elemente noi la o ListViewItems ListView de control, şi acestea sunt atât de numeroase ca de control nu are spaţiu suficient pentru a le afişa pe ecran, adăugând o bară verticală de defilare. Acest lucru este perfect, cu excepţia faptului că în mod implicit nu sunt elemente noi, care se adaugă.

Astăzi, vreau să arăt cum să rezolve această mică problemă.

Controalele Visual Basic. Con net ListView să ne dea o gamă impresionantă de proprietăţi pentru configurare, astfel ca de multe ori nu sunt cunoscute.

Vreau să arăt un exemplu simplu. Pentru că avem nevoie de un formular, un control listview şi un buton.

listviewItemSiempreVisible001

Proprietăţile care ne sunt cel mai mare interes:

  • HideSelection: Setarea acestei la fals în cazul în care nici un control listview are accent, vom continua să vedem ce elementul selectat.
  • ListView1.FocusedItem.EnsureVisible () pentru a forţa elementul selectat pentru a fi mereu vizibil.

Ei bine, acum, dacă codul:

     Private Sub Form1_Load (ByVal Ca expeditor System.Object, ByVal e ca System.EventArgs) Manere MyBase.Load
         ListView1.HideSelection = Fals
         ListView1.FullRowSelect = True
         ListView1.MultiSelect = Fals
     End Sub

     Private Sub Button1_Click (ByVal Ca expeditor System.Object, ByVal e ca System.EventArgs) Manere Button1.Click
         Static i ca integer = 0
         i + = 1
         ListView1.Items.Add (New ListViewItem ("Numărul articolului" & i))
         ListView1.Items (ListView1.Items.Count - 1). Selectate = True
         ListView1.Items (ListView1.Items.Count - 1). Axat = True

         ListView1.FocusedItem.EnsureVisible ()
     End Sub

Rularea ar trebui să arate mai mult ca ceea ce este prezentat în această imagine:

listviewItemSiempreVisible002

Asta e tot, în cazul în care aceste informaţii te-a ajutat, vă rugăm să lăsaţi un comentariu.

11 Responses to "listview: Postul mereu pe partea de sus"

  1. Bitacoras.com spune:

    Bitacoras.com informaţii ...

    Rata de în Bitacoras.com: Ori de câte ori se adaugă elemente noi la o ListViewItems ListView de control, şi acestea sunt atât de numeroase ca de control nu are spaţiu suficient pentru a le afişa pe ecran, adăugând o bară verticală de defilare. Acest lucru este .....

  2. MYSTIC a spus:

    Ei bine, ştim cu toţii Q pentru a afişa datele, dar eu q am interesat dacă pot explica modul în care sunt stocate într-un modul de tăiere sunt programul aunq

  3. RCHARD spune:

    O INTREBARE Vreau ca DataGridView acelaşi exemplu, DAR PENTRU DACĂ NU m-ar putea ajuta în acest NUMĂR

    My Email:
    richardramos789@hotmail.com
    Te-ar fi recunoscător dacă mi-ai ajuta

  4. Jorge spune:

    Bună ziua, cum,

    Uite am o îndoială cu o listview să pună în aplicare pe sistemul meu, am punerea împreună un sistem POS şi introduceţi un cod în realizare txtbox mea în imprimare mea listview corect, întrebarea mea este că vreau, când înregistrarea acelaşi produs, mai degrabă decât adăugarea unui nou rând se adaugă la aceasta şi în coloana Cantitate va creşte numărul.

    De exemplu, dacă am adăuga 12345, este tipărită în listview meu, dar dacă am adăuga 12345 de a plasa de imprimare pe un rând nou este tipărit într-un rând, dar în suma de coloana creste la 2 nu, dacă am explica sau m-ar putea ghida în această întrebare pe care am mi-ar aprecia foarte mult.

    • Elisei spune:

      Am nici foarte clar ceea ce vrei sa faci, dar am sugera că te uiti la acest exemplu ar putea fi de ajutor: http://www.solovb.net/index.php/2009/02/19/modificar-datos- de-a-listview /
      Orice întrebări suplimentare, nu ezitati sa ma contactati.

      În ceea ce priveşte

    • Oscar spune:

      Salut George, ceea ce vă întreb implică persistenţa de date şi pentru a actualiza o coloană care aparţine la rangul de o cheie specifică într-un tabel cu 2 soluţii pe care le puteţi alege: prima creare a unei baze de date cu câmpurile de care aveţi nevoie şi de a folosi o legătură fie cu MySQL folosind adaptorul pentru aceasta sau SQL Server este inclus în Visual Studio, un alt mod este prin fişiere plate, care salvează datele într-un fişier. txt şi apoi trece la citirea si rescrierea unor date , pentru ambele opţiuni ca ai nevoie pentru a creşte valoarea pentru o rewquerida coloană, ar trebui să se aplice, de asemenea, o funcţie pentru a creşte această valoare pe baza condiţia aveţi nevoie. :)

  5. Jorge spune:

    Elisei vă mulţumesc foarte mult pentru răspunsul dumneavoastră prompt.

    Ok uite voi explica. Am o caseta de text în care se adaugă produsele pe care le am în PB mea, ok de exemplu, Coca-Cola, am să introduceţi codul de bare de pe TextBox mea, în acest caz ar fi 12345678, care arată bine în listview meu descrierea produsului, cu coloane mele listview sunt:

    Cod produs, descriere, cantitate, preţ de vânzare, Existenţa.

    Apoi se adaugă produsul la rândul meu este plin de astfel de date în listview mea, dar dacă am re-introduceţi codul de Coca-Cola, este prezentată în rândul următor, pe care îmi place să fac este că, atunci când introduceţi un alt Odată ce produsul în sine, mai degrabă decât într-un rând nou, doar schimba numărul de coloane Cantitate mea, în acest caz, schimb de la 2.

    Asta e mai mult de-a vreau să fac, dacă am putea spune mai mult sau mai puţin răspunde la această întrebare mi-ar aprecia.

    Mulţumiri

    • Elisei spune:

      Ei bine, acum este un pic mai uşor.

      Primul lucru pe care nu înainte de a introduce o nouă linie este de a traversa listview pentru a verifica dacă aţi introdus deja codul pe care încercaţi să introduceţi.
      Asta faci o pentru fiecare, de exemplu,

      "Cred ca o variabilă care să indice dacă am găsit codul deja exista
      Dim există ca Boolean = false
      Pentru fiecare element ca ListViewItem în listviewProductos.items
      Apoi, dacă item.text = txtCodigo.text
      "Dacă veniţi aici este pentru că a fost deja încărcat
      cantidadAnterior dim ca Integer = Ctype (item.subitm (2) de text,. Întreg)
      item.subitem (2) cantidadAnterior +. de text = Ctype (txtCantidad.text, integer)
      "Dacă găsiţi observaţi că deja există
      există = True
      final, dacă
      Următor

      Dacă nu, atunci nu există
      "Aici nu este găsit apoi introduceţi
      Final, dacă

      Ei bine, Espro servi ... nu se poate exclude o Terner greşeli, deoarece l-am scris direct aici

      Dar, cu siguranţă vă va servi

  6. Jorge spune:

    Multumesc din nou,

    Vezi ce a comentat că, dacă am fi lucrat la această problemă prin schimbarea valorii coloanei Cantitate, ceea ce se intampla este ca eu sunt de extragere de valori dintr-o bază de date MySQL, am arata arata ca codul de imprimare listview mea

    Listview Private Sub ()
    Dim i ca integer
    Dim e ca integer
    Numărul Dim ca integer
    Dim Subtotal Ca dublă
    Lista Dim Ca nouă ListViewItem

    Ca nouă MySqlCommand string Dim ("SELECT * FROM produse WHERE ProductCode = '" & txtCodigoBarras.Text & "" ", con)

    cadena.ExecuteReader mysqldr = ()

    În timp ce mysqldr.Read ()
    Lista = listView1.Items.Add (txtCodigoBarras.Text.Trim)
    listar.SubItems.Add (CStr (mysqldr ("Descriere")))
    listar.SubItems.Add (CStr (mysqldr ("Cantitate")))
    listar.SubItems.Add (CStr (mysqldr ("PrecioVenta")))
    listar.SubItems.Add (CStr (mysqldr ("stoc")))
    Sfârşit timp ce

    Dim există ca Boolean = false

    Pentru fiecare articol, cum ListViewItem În ListView1.Items
    Apoi, dacă item.Text = txtCodigoBarras.Text
    CantidadAnterior Dim Ca Integer = Ctype (listar.SubItems (2) text,. Întregi)
    listar.SubItems (2). Text = cantidadAnterior + Ctype (mysqldr ("Cantitate"), Întreg)
    există = True
    Final, dacă
    Următor
    Dacă nu, atunci nu există
    Final, dacă

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

    Pentru s = 0.0 Pentru a ListView1.Items.Count - 1
    Subtotal = Subtotal peste ListView1.Items (e) SubItems (3). Text.
    Următor
    lbLSubTotal.Text = "$" & Format (Subtotal, "0.00")

    Pentru i = 0 Pentru a ListView1.Items.Count - 1
    contor = contor + ListView1.Items (i) SubItems (2).. Text
    Următor
    Me.lblContador.Text = contor

    mysqldr.Close ()
    End Sub

    Codul de care am petrecut atât de punerea în aplicare a acesteia şi a vedea rezultatele în fotografia următoare:

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

  7. Jorge spune:

    Prietenul haha ​​pare rau daca am suparat cu atât de multe întrebări, dar am găsi mai mult sau mai puţin problema, de exemplu, să introducă produsul

    DORITOSNAC

    Se introduce în rândul din faţă şi atunci când am pus DORITOSNAC este imprimat pe al doilea rând, dar au introdus deja primele schimbări valoarea sa de la cantitate la 2 şi este tipărită înapoi pentru a intra din nou pe un rând de 3, dar la fel de de la 1 rând îşi modifică valoarea la 3

    Apoi, dacă txtCodigoBarras.Text = txtCodigoBarras.Text
    Dim există ca Boolean = false
    Pentru fiecare articol, cum ListViewItem În ListView1.Items
    Apoi, dacă item.Text = txtCodigoBarras.Text
    CantidadAnterior Dim Ca Integer = Ctype (item.SubItems (2) text,. Întregi)
    item.SubItems (2). Text = cantidadAnterior + Ctype (lblCantidadProd.Text, integer)
    există = True
    Final, dacă
    Următor
    Dacă nu, atunci nu există
    Final, dacă

    Să vedem dacă am înţeles, acum, dacă nu orice explicaţie din partea ta va fi recunoscător.

  8. Jorge spune:

    deja atins rezolva multe mulţumiri pentru sprijinul acordat obţine soluţia:

    Numărul Dim ca integer
    Pentru ca integer j = 0 Pentru a Me.ListView1.Items.Count - 1
    Dacă Me.ListView1.Items (j) SubItems (0). Apoi Text. = TxtCodigoBarras.Text
    count = CInt (Me.ListView1.Items (j). SubItems (2). text) + 1
    Me.ListView1.Items (j). SubItems (2) Text = numărul.
    Exit Sub

Comentariu