ListView: Το σημείο είναι πάντα ορατό

Όποτε είναι ListViewItems νέα τεκμήρια που προστίθενται σε ένα στοιχείο ελέγχου ListView, και αυτά είναι τόσα πολλά ώστε ο έλεγχος δεν έχει αρκετό χώρο για να τα εμφανίσετε στην οθόνη, να προσθέσετε μια κατακόρυφη γραμμή κύλισης. Αυτό είναι τέλειο, μόνο από προεπιλογή δεν είναι ότι έχουν προστεθεί νέα στοιχεία.

Σήμερα θέλω να δείξω πώς να λύσει αυτό το μικρό πρόβλημα.

Visual Basic ελέγχους. Καθαρή κώνου της ListView να μας δώσει μια εντυπωσιακή σειρά των ιδιοτήτων για τη διαμόρφωση, έτσι ώστε συχνά είναι άγνωστα.

Μου δείχνουν ένα απλό παράδειγμα. Γι 'αυτό χρειαζόμαστε μια φόρμα, ένα στοιχείο ελέγχου ListView και ένα κουμπί.

listviewItemSiempreVisible001

Οι ιδιότητες που μας ενδιαφέρουν είναι τα εξής:

  • HideSelection: ορίστε την σε ψευδείς, έτσι ώστε αν και ο έλεγχος ListView δεν έχει την εστίαση, συνεχίζουμε να δείτε ποιο είναι το επιλεγμένο στοιχείο.
  • ListView1.FocusedItem.EnsureVisible () για να αναγκάσει το επιλεγμένο στοιχείο να είναι πάντα ορατό.

Λοιπόν, τώρα εάν ο κωδικός:

     Private Sub Form1_Load (ByVal αποστολέα Όπως System.Object, ByVal e Όπως System.EventArgs) Λαβές MyBase.Load
         ListView1.HideSelection = False
         ListView1.FullRowSelect = True
         ListView1.MultiSelect = False
     Sub End

     Private Sub Button1_Click (ByVal αποστολέα Όπως System.Object, ByVal e Όπως System.EventArgs) Λαβές Button1.Click
         Στατική i As Integer = 0
         i = 1 +
         ListView1.Items.Add (Νέα ListViewItem ("Αριθμός είδους" & i))
         ListView1.Items (ListView1.Items.Count - 1). Επιλεγμένα = True
         ListView1.Items (ListView1.Items.Count - 1). Εστιασμένη = True

         ListView1.FocusedItem.EnsureVisible ()
     Sub End

Όταν τρέχετε πρέπει να εξετάσουμε πολύ παρόμοια με αυτή που φαίνεται σε αυτήν την εικόνα:

listviewItemSiempreVisible002

Αυτό είναι το μόνο, εάν η πληροφορία αυτή σας βοήθησε, παρακαλώ αφήστε ένα σχόλιο.

11 απαντήσεις σε "ListView: Item πάντα στην κορυφή"

  1. Bitacoras.com λέει:

    Bitacoras.com Πληροφορίες ...

    Τιμή στο Bitacoras.com: Όποτε είναι ListViewItems νέα τεκμήρια που προστίθενται σε ένα στοιχείο ελέγχου ListView, και αυτά είναι τόσο πολλά που ο έλεγχος δεν έχει αρκετό χώρο για να τα εμφανίσετε στην οθόνη, προσθέστε μια κατακόρυφη γραμμή κύλισης. Αυτό είναι ... ..

  2. MYSTIC, δήλωσε:

    Λοιπόν όλοι γνωρίζουμε q για να εμφανίσετε τα δεδομένα, αλλά q μου ενδιαφέρομαι αν μπορεί να εξηγήσει πώς μια μονάδα είναι αποθηκευμένο στο πρόγραμμα είναι πριονισμένη aunq

  3. RCHARD λέει:

    Παράδειγμα, μια ίδια ερώτηση Αλλά θέλω να ξέρω αν ένα DataGridView θα μπορούσε να βοηθήσει σε αυτό το πρόβλημα

    Το email μου:
    richardramos789@hotmail.com
    ΕΣΕΙΣ θα ήταν ευγνώμων αν να με βοηθήσετε

  4. Jorge λέει:

    Γεια σας, όπως,

    Κοιτάξτε έχω μια αμφιβολία με ListView να εφαρμόσει στο σύστημά μου, είμαι βάζοντας μαζί ένα σύστημα POS και εισάγοντας έναν κωδικό στο επίτευγμα txtbox μου στην ListView εκτύπωσης μου σωστά, η ερώτησή μου είναι ότι θέλω κατά την εγγραφή του ίδιου προϊόντος, παρά την προσθήκη μιας νέας σειρά προστίθεται σε αυτό και στη στήλη ποσότητα θα αυξηθεί ο αριθμός.

    Για παράδειγμα, αν μπορώ να προσθέσω 12345, είναι τυπωμένο σε ListView μου, αλλά αν μπορώ να προσθέσω 12345 για να πραγματοποιηθεί εκτύπωση σε μια νέα γραμμή είναι τυπωμένο σε μια σειρά, αλλά το ποσό αυτό αυξάνεται σε στήλη 2, αν δεν είχα εξηγήσει ή να θα μπορούσε να με οδηγήσει σε αυτό το ερώτημα που έχω εγώ θα εκτιμήσουν.

    • Ελισσαιέ λέει:

      δεν είναι πολύ σαφές για μένα ό, τι θέλουν να κάνουν, αλλά σας προτείνω να εξετάσουμε αυτό το παράδειγμα θα μπορούσε να είναι χρήσιμη: http://www.solovb.net/index.php/2009/02/19/modificar-datos- of-a-ListView /
      Οποιαδήποτε περαιτέρω ερωτήσεις μην διστάσετε να επικοινωνήσετε μαζί μου.

      Regards

    • Oscar λέει:

      Γεια σου Γιώργο, τι σας ζητήσει περιλαμβάνει επιμονή δεδομένα και να ενημερώσετε μια στήλη που ανήκουν στην τάξη του ένα συγκεκριμένο κλειδί σε έναν πίνακα με 2 λύσεις που μπορείτε να επιλέξετε: πρώτα να δημιουργήσετε μια DB με τα πεδία που χρειάζεστε και χρησιμοποιείτε MySQL σύνδεση είτε το χρησιμοποιεί ή τον προσαρμογέα που περιλαμβάνονται στο SQL Server Visual Studio, ο άλλος τρόπος είναι μέσω τυποποιημένων αρχείων αποθηκεύονται σε ένα αρχείο δεδομένων. txt και στη συνέχεια να προχωρήσει στην ανάγνωση και επαναδιατύπωση κάποιων δεδομένων , και για τις δύο επιλογές που θα πρέπει να αυξηθεί η τιμή για μια στήλη rewquerida, πρέπει επίσης να χρησιμοποιήσετε μια λειτουργία που αυξάνουν την τιμή αυτή με βάση την κατάσταση που επιθυμείτε. :)

  5. Jorge λέει:

    Elisha σας ευχαριστώ πολύ για την άμεση απάντησή σας.

    Ok ματιά Θα εξηγήσω. Έχω ένα πλαίσιο κειμένου στο οποίο μπορώ να προσθέσω τα προϊόντα που έχω στο DB μου, εντάξει, για παράδειγμα, η Coca-cola, πληκτρολογήστε το barcode στο TextBox μου σε αυτή την περίπτωση θα ήταν 12345678, δείχνοντας σε καλή ListView μου στην περιγραφή του προϊόντος με τις στήλες μου ListView είναι οι εξής:

    Κωδικός, Περιγραφή, ποσότητα, τιμή πώλησης, Ύπαρξη.

    Στη συνέχεια, προσθέστε το προϊόν με τη γραμμή μου είναι γεμάτη από τέτοια δεδομένα σε ListView μου, αλλά αν έχω ξανά-εισάγετε τον κωδικό της Coca-Cola, εμφανίζεται σε μια επόμενη σειρά, η οποία μου αρέσει να κάνω είναι ότι, όταν εισάγετε ένα άλλο Μόλις στη θέση του το ίδιο προϊόν που εμφανίζεται σε μια νέα γραμμή, απλά αλλάξτε τον αριθμό των Ποσότητα στήλη μου, σε αυτή την ανταλλαγή υπόθεση 2.

    Αυτό είναι περισσότερο από ό, τι θέλω να κάνω ος αν θα μπορούσα να πω περισσότερα ή λιγότερα απαντηθεί το ερώτημα αυτό εγώ θα το εκτιμούσα.

    Ευχαριστίες

    • Ελισσαιέ λέει:

      Λοιπόν, τώρα είναι λίγο ελαφρύτερο.

      Το πρώτο πράγμα που κάνετε πριν από την εισαγωγή μιας νέας γραμμής είναι να διασχίσουν τη ListView για να ελέγξετε αν έχετε εισάγει ήδη τον κωδικό που προσπαθείτε να εισαγάγετε.
      Αυτό το κάνετε με ένα για τον καθένα, για παράδειγμα

      "Νομίζω ότι μια μεταβλητή για να μου πείτε αν ο κωδικός και διαπίστωσε ότι δεν υπήρχε
      Dim υπάρχει ως Boolean = False
      Για κάθε στοιχείο που ListViewItem σε listviewProductos.items
      Στη συνέχεια, αν item.text = txtCodigo.text
      «Αν έρθετε εδώ είναι επειδή ήταν ήδη φορτωθεί
      cantidadAnterior αμυδρό ως Integer = CType (item.subitm (2). κείμενο, Ακέραιος)
      item.subitem (2). cantidadAnterior + κείμενο = CType (txtCantidad.text, Integer)
      «Αν παρατηρήσετε βρήκατε αυτό υπήρχε ήδη
      = Υπάρχει True
      τέλος, αν
      Επόμενη

      Αν όχι τότε υπάρχει
      «Εδώ το ένθετο, αλλά βρήκε
      Τέλος, εάν

      Λοιπόν, Espro σας εξυπηρετήσει ... δεν μπορεί να αποκλείσει ένα λάθος Golde από τότε που το έγραψα απευθείας εδώ

      Αλλά σίγουρα θα σας εξυπηρετήσει

  6. Jorge λέει:

    Ευχαριστώ και πάλι,

    Κοίτα με σχολίασα ότι αν το αποτέλεσμα στο ερώτημα αυτό δοθεί αλλάζοντας την τιμή από τη στήλη Ποσότητα, αυτό που συμβαίνει είναι ότι είμαι εξαγωγή τιμές από μια βάση δεδομένων MySQL εξετάζει τον κωδικό σας δείξω πώς μπορείτε να εκτυπώσετε ListView μου

    ListView Private Sub ()
    Dim i As Integer
    Dim s As Integer
    Dim μετράνε As Integer
    Υποσύνολο Dim As Double
    Dim καταλόγου καθώς νέες ListViewItem

    Όπως Νέα MySqlCommand εγχόρδων Dim ("SELECT * FROM προϊόντα όπου ProductCode = '" & txtCodigoBarras.Text & "'", con)

    cadena.ExecuteReader mysqldr = ()

    Ενώ mysqldr.Read ()
    list = listView1.Items.Add (txtCodigoBarras.Text.Trim)
    listar.SubItems.Add (CStr (mysqldr ("Περιγραφή")))
    listar.SubItems.Add (CStr (mysqldr ("Ποσότητα")))
    listar.SubItems.Add (CStr (mysqldr ("PrecioVenta")))
    listar.SubItems.Add (CStr (mysqldr ("Χρηματιστήριο")))
    Ενώ τέλος

    Dim υπάρχει ως Boolean = False

    Για κάθε στοιχείο όπως ListViewItem Σε ListView1.Items
    Αν txtCodigoBarras.Text Τότε item.Text =
    CantidadAnterior Dim As Integer = CType (listar.SubItems (2). Κείμενο, Ακέραιος)
    listar.SubItems (2). cantidadAnterior + Text = CType (mysqldr ("Ποσότητα"), Ακέραιος)
    = Υπάρχει True
    End If
    Επόμενη
    Αν όχι τότε υπάρχει
    End If

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

    Για s = 0,0 έως ListView1.Items.Count - 1
    Υποσύνολο = Υποσύνολο + ListView1.Items (ες). Υποστοιχεία (3). Text
    Επόμενη
    lbLSubTotal.Text = "$" & Format (Υποσύνολο, "0,00")

    Για i = 0 Για να ListView1.Items.Count - 1
    μετρητής = μετρητής + ListView1.Items (i). υποστοιχεία (2). Text
    Επόμενη
    Me.lblContador.Text = μετρητής

    mysqldr.Close ()
    Sub End

    Πέρασα τον κωδικό που εφαρμόζει καλά και να δούμε τα αποτελέσματα στην επόμενη φωτογραφία:

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

  7. Jorge λέει:

    Haha φίλο σου Συγνώμη αν σας ενοχλεί τόσο πολλές ερωτήσεις, αλλά είμαι εξεύρεση περισσότερο ή λιγότερο το πρόβλημα, να εισαγάγει τα προϊόντα, π.χ.

    DORITOSNAC

    Εισάγεται στην πρώτη σειρά και όταν έβαλα DORITOSNAC είναι τυπωμένο στη δεύτερη σειρά, αλλά είχε ήδη εισήγαγε την πρώτη αξία του μεταβάλλεται από την ποσότητα στην 2 και να επανέλθουν και πάλι είναι τυπωμένο σε μια σειρά 3, αλλά εξίσου την 1 σειρά αλλάζει την τιμή σε 3

    Αν txtCodigoBarras.Text Τότε txtCodigoBarras.Text =
    Dim υπάρχει ως Boolean = False
    Για κάθε στοιχείο όπως ListViewItem Σε ListView1.Items
    Αν txtCodigoBarras.Text Τότε item.Text =
    CantidadAnterior Dim As Integer = CType (item.SubItems (2). Κείμενο, Ακέραιος)
    item.SubItems (2). cantidadAnterior + Text = CType (lblCantidadProd.Text, Integer)
    = Υπάρχει True
    End If
    Επόμενη
    Αν όχι τότε υπάρχει
    End If

    Ας δούμε αν μπορώ να το πάρει τώρα, αν όχι καμία εξήγηση από την πλευρά σας θα είναι ευγνώμονες.

  8. Jorge λέει:

    ήδη λύνει πολλές ευχαριστίες για την υποστήριξή σας δώσουμε τη λύση που:

    Dim μετράνε As Integer
    Για j As Integer = 0 Για να Me.ListView1.Items.Count - 1
    Αν Me.ListView1.Items (ι). Υποστοιχεία (0). TxtCodigoBarras.Text Τότε Κείμενο =
    count = CInt (Me.ListView1.Items (ι). υποστοιχεία (2). Text) + 1
    Me.ListView1.Items (ι). Υποστοιχεία (2). Text = μετράνε
    Υπο Έξοδος

Σχόλιο