Listview: Item immer sichtbar

Immer wenn Sie neue Elemente hinzuzufügen, um ein ListView-Steuerelement ListViewItems, und diese sind so zahlreich, dass die Steuerung nicht über genügend Speicherplatz, um sie auf dem Bildschirm anzuzeigen, das Hinzufügen einer vertikalen Bildlaufleiste. Das ist perfekt, außer, dass standardmäßig nicht, dass neue Elemente hinzugefügt werden.

Heute möchte ich zeigen, wie man dieses kleine Problem zu lösen.

Visual Basic-Steuerelemente. Der Kegel net listview geben Sie uns eine beeindruckende Reihe von Eigenschaften für die Konfiguration, so dass oft nicht bekannt sind.

Ich möchte ein einfaches Beispiel zeigen. Dafür brauchen wir eine Form, ein ListView-Steuerelement und eine Schaltfläche.

listviewItemSiempreVisible001

Die Eigenschaften, die uns am meisten interessieren, sind:

  • HideSelection: Wenn Sie diesen Wert auf false, wenn kein ListView-Steuerelement den Fokus hat, fahren wir zu sehen, was das ausgewählte Element.
  • ListView1.FocusedItem.EnsureVisible () zu zwingen, das ausgewählte Element zu sein, immer sichtbar.

Nun, jetzt, wenn der Code:

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

     Private Sub Button1_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
         Static i As Integer = 0
         i + = 1
         ListView1.Items.Add (New ListViewItem ("Artikelnummer" & i))
         ListView1.Items (ListView1.Items.Count - 1). Selected = True
         ListView1.Items (ListView1.Items.Count - 1). Focused = True

         ListView1.FocusedItem.EnsureVisible ()
     End Sub

Laufen sollte es ähnlich sehen, was in diesem Bild gezeigt:

listviewItemSiempreVisible002

Das ist alles, wenn diese Informationen geholfen haben, hinterlassen Sie bitte einen Kommentar.

11 Responses to "Listenansicht: Item Immer im Vordergrund"

  1. Informationen Bitacoras.com ...

    Rate in Bitacoras.com: Immer wenn Sie neue Elemente hinzuzufügen, um ein ListView-Steuerelement ListViewItems, und diese sind so zahlreich, dass die Steuerung nicht über genügend Speicherplatz, um sie auf dem Bildschirm anzuzeigen, das Hinzufügen einer vertikalen Bildlaufleiste. Dies ist .....

  2. MYSTIC sagte:

    Nun wissen wir alle, q, um die Daten anzuzeigen, sondern I q Ich bin interessiert, wenn sie erklären kann, wie in einem Modul gespeichert sind Sägen das Programm aunq

  3. RCHARD sagt:

    Eine Frage Ich möchte, dass SAMe sondern beispielsweise DataGridView IF NOT könnte mich in diesem Gebiet vorantreiben

    Meine E-Mail:
    richardramos789@hotmail.com
    Sie wäre dankbar, wenn Sie mir helfen

  4. Jorge sagt:

    Hallo, wie,

    Schau, ich habe einen Zweifel mit einem ListView auf meinem System zu implementieren, ich bin der Zusammenstellung eines POS-Systems und geben Sie einen Code in meine txtbox Errungenschaft in meinem ListView drucken korrekt, meine Frage ist, dass ich bei der Anmeldung das gleiche Produkt möchten, anstatt eine neue Zeile wird zugegeben und in der Spalte Menge wird die Zahl zu erhöhen.

    Zum Beispiel, wenn ich 12345 hinzufügen, wird in meinem ListView gedruckt, aber wenn ich auf 12345 Aufdruck auf einer neuen Zeile platzieren hinzufügen wird in einer Zeile gedruckt, sondern in der Spalte Betrag erhöht sich auf 2, wenn ich nicht erklären oder konnte mich in dieser Frage, die ich habe würde ich sehr schätzen zu führen.

    • Elisa sagt:

      Ich habe nicht sehr klar, was du tun willst, aber ich schlage vor, dass Sie an diesem Beispiel sehen können hilfreich sein: http://www.solovb.net/index.php/2009/02/19/modificar-datos- of-a-ListView /
      Haben Sie weitere Fragen zögern Sie nicht mich zu kontaktieren.

      Viele Grüße

    • Oscar sagt:

      Hallo Georg, was fragen Sie beinhaltet Daten Persistenz und eine Spalte gehören in den Rang eines bestimmten Schlüssel in einer Tabelle mit 2 Lösungen aktualisieren können Sie wählen: Zunächst erstellen Sie einen DB mit den von Ihnen benötigten Felder und verwenden Sie eine Verbindung entweder mit MySQL mit dem Adapter für ihn oder den SQL Server mit Visual Studio enthalten ist, ist der andere Weg über Flat Files, die die Daten in einer Datei zu speichern. txt und dann zum Lesen und Umschreiben einiger Daten gehen , für beide Optionen, wie Sie den Wert für eine Spalte rewquerida erhöhen müssen, sollten Sie auch dann eine Funktion, um diesen Wert unter der Bedingung, die Sie benötigen Basis zu erhöhen. :)

  5. Jorge sagt:

    Elisha ich danke Ihnen sehr für Ihre prompte Antwort.

    Ok schauen Ich werde erklären. Ich habe ein Textfeld, in dem die Produkte Ich habe in meiner DB hinzuzufügen, ok zum Beispiel, Coca-Cola, geben Sie mir den Barcode auf meinem TextBox in diesem Fall die Produktbeschreibung mit meinem Spalten würden 12345678, gutes Abschneiden in meinem ListView werden ListView sind:

    Product Code, Bezeichnung, Menge, Preis verkaufen, Existenz.

    Dann fügen Sie das Produkt an meiner Reihe ist voll von solchen Daten in meinem ListView, aber wenn ich wieder einfügen des Codes von Coca-Cola wird in einer nächsten Reihe, die Ich mag zu tun gezeigt, dass, wenn Sie ein anderes einfügen Nachdem das Produkt selbst und nicht in einer neuen Zeile, ändern Sie einfach die Zahl meiner Spalte Menge, in diesem Fall den Austausch zu 2.

    Das ist mehr als nd ich tun möchte, wenn ich mehr oder weniger könnte sagen, diese Frage zu beantworten, ich würde es zu schätzen wissen.

    Dank

    • Elisa sagt:

      Nun, das ist jetzt ein wenig leichter.

      Das erste, was Sie vor dem Einsetzen müssen Sie eine neue Zeile ist es, die ListView zu überqueren, um zu überprüfen, wenn Sie bereits den Code Sie versuchen, einzufügen sind, eingegeben haben.
      , Die Sie tun ein For Each, zum Beispiel

      "Ich denke, eine Variable, um anzuzeigen, ob ich den Code gefunden, gab es schon
      Dim vorhanden As Boolean = False
      Für jedes Element als ListViewItem in listviewProductos.items
      Dann, wenn item.text = txtCodigo.text
      "Wenn Sie kommen hierher, weil es bereits geladen wurde
      cantidadAnterior dim as Integer = CType (item.subitm (2). Text, Integer)
      item.subitem (2). cantidadAnterior + Text = CType (txtCantidad.text, Integer)
      'Wenn Sie finden Sie feststellen, dass bereits existierte
      existiert = True
      end if
      Nächste

      Wenn nicht, dann gibt
      "Hier wird es dann nicht gefunden einfügen
      End if

      Nun, dienen Espro ... Sie können nicht ausschließen, einen Tippfehler Terner seit ich es geschrieben habe direkt hier

      Aber sicher werden Sie dienen

  6. Jorge sagt:

    Nochmals vielen Dank,

    Sehen Sie bemerkte, dass, wenn ich über diese Frage, indem der Wert der Spalte Menge gearbeitet hatte, was passiert ist, ich bin Extrahieren von Werten aus einer MySQL-Datenbank zeigen, sieht aus wie ich den Code ausdrucken meine ListView

    Listview Private Sub ()
    Dim i As Integer
    Dim s As Integer
    Dim Anzahl As Integer
    Zwischensumme Dim As Double
    Dim Liste As New ListViewItem

    As New MySqlCommand Dim Zeichenfolge ("SELECT * FROM Products WHERE ProductCode = '" & txtCodigoBarras.Text & "'", con)

    cadena.ExecuteReader mysqldr = ()

    Während mysqldr.Read ()
    list = listView1.Items.Add (txtCodigoBarras.Text.Trim)
    listar.SubItems.Add (CStr (mysqldr ("Description")))
    listar.SubItems.Add (CStr (mysqldr ("Menge")))
    listar.SubItems.Add (CStr (mysqldr ("PrecioVenta")))
    listar.SubItems.Add (CStr (mysqldr ("Stock")))
    End While

    Dim vorhanden As Boolean = False

    Für jeden Tagesordnungspunkt ListViewItem In ListView1.Items
    Dann, wenn item.Text = txtCodigoBarras.Text
    CantidadAnterior Dim As Integer = CType (listar.SubItems (2). Text, Integer)
    listar.SubItems (2). Text = cantidadAnterior + CType (mysqldr ("Menge"), Integer)
    existiert = True
    End If
    Nächste
    Wenn nicht, dann gibt
    End If

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

    Für s = 0,0 bis ListView1.Items.Count - 1
    Zwischensumme = Zwischensumme + ListView1.Items (n). SubItems (3). Text
    Nächste
    lbLSubTotal.Text = "$" & Format (Zwischensumme, "0.00")

    Für i = 0 bis ListView1.Items.Count - 1
    Zähler = Zähler + ListView1.Items (i). SubItems (2). Text
    Nächste
    Me.lblContador.Text = Zähler

    mysqldr.Close ()
    End Sub

    Der Code, den ich verbrachte so umzusetzen und die Ergebnisse in dem folgenden Foto:

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

  7. Jorge sagt:

    Freund haha ​​sorry, wenn ich mit so vielen Fragen aufgeregt, aber ich bin mehr oder weniger das Problem zu finden, zum Beispiel ein Produkt einführen

    DORITOSNAC

    Wird in der ersten Reihe eingefügt und wenn ich legte DORITOSNAC wird in der zweiten Reihe gedruckt, aber schon die ersten Veränderungen eingeführt sein Wert von der Menge auf 2 und wird wieder zurück zu geben auf einem 3 Zeilen gedruckt werden, sondern gleichermaßen die ab dem 1. Zeile ändert den Wert auf 3

    Dann, wenn txtCodigoBarras.Text = txtCodigoBarras.Text
    Dim vorhanden As Boolean = False
    Für jeden Tagesordnungspunkt ListViewItem In ListView1.Items
    Dann, wenn item.Text = txtCodigoBarras.Text
    CantidadAnterior Dim As Integer = CType (item.SubItems (2). Text, Integer)
    item.SubItems (2). Text = cantidadAnterior + CType (lblCantidadProd.Text, Integer)
    existiert = True
    End If
    Nächste
    Wenn nicht, dann gibt
    End If

    Mal sehen, ob ich es jetzt bekommen, wenn keine Erklärung Ihrerseits werden es Ihnen danken.

  8. Jorge sagt:

    bereits erreicht zu lösen vielen Dank für Ihre Unterstützung erhalten die Lösung:

    Dim Anzahl As Integer
    Für j As Integer = 0 To Me.ListView1.Items.Count - 1
    Wenn Me.ListView1.Items (j). SubItems (0). Dann Text = txtCodigoBarras.Text
    count = CInt (Me.ListView1.Items (j). SubItems (2). Text) + 1
    Me.ListView1.Items (j). SubItems (2). Text = count
    Exit Sub

Kommentar