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
     End Sub

     Private Sub Button1_Click (ByVal השולח כמו System.Object, ByVal e כמו System.EventArgs) ידיות Button1.Click
         סטטי אני כמו מספר שלם = 0
         אני + = 1
         ListView1.Items.Add (חדש ListViewItem ("מספר פריט" & i))
         ListView1.Items (ListView1.Items.Count - 1). נבחר נכון =
         ListView1.Items (ListView1.Items.Count - 1). ממוקד = True

         ListView1.FocusedItem.EnsureVisible ()
     End Sub

ריצה זה צריך להיראות כמו מה מוצג בתמונה זו:

listviewItemSiempreVisible002

זה הכל, אם מידע זה עזר לך, בבקשה להשאיר תגובה.

11 תגובות ל "Listview: פריט תמיד על העליונה"

  1. Bitacoras.com אומר:

    מידע Bitacoras.com ...

    דרג ב Bitacoras.com: בכל פעם שאתה להוסיף פריטים חדשים כמה ListViewItems בקרה listview, ואלה הם רבים כל כך שליטה אין מספיק מקום להציג אותם על המסך, הוספת פס גלילה אנכי. זה .....

  2. מיסטיק אמר:

    ובכן כולנו יודעים ש 'כדי להציג את הנתונים אבל אני ש אני מתעניין אם הם יכולים להסביר כיצד מאוחסנים מודול הם ניסור תוכנית aunq

  3. RCHARD אומר:

    שאלה אני רוצה את DataGridView דוגמא דומה, אך כי אם לא יכול לעזור לי בגיליון זה

    כתובת הדוא"ל שלי:
    richardramos789@hotmail.com
    האם אתה יכול להיות אסיר תודה אם תעזור לי

  4. חורחה אומר:

    שלום כזה,

    תראו יש לי ספק עם listview ליישם במערכת שלי, אני להרכיב מערכת ממוצע והזן קוד בהישגים txtbox שלי בדפוס שלי listview נכון, השאלה שלי היא שאני רוצה בעת ההרשמה את אותו מוצר, במקום להוסיף שורה חדשה נוספת אותה בעמודה כמות תגדיל את המספר.

    לדוגמה, אם אני מוסיף 12345, מודפס listview שלי, אבל אם אני מוסיף 12345 להציב הדפסה בשורה חדשה מודפס בשורה, אלא בסכום הטור עולה ל 2, לא אם אני מסבירה או יכול להנחות אותי לשאלה זו שיש לי אני מאוד מעריך.

    • אלישע אומר:

      אין לי מאוד ברור מה אתה רוצה לעשות, אבל אני מציע לך להסתכל בדוגמה זו עשוי להיות מועיל: http://www.solovb.net/index.php/2009/02/19/modificar-datos- of-a-listview /
      שאלות נוספות אל תהססו לפנות אלי.

      בברכה

    • אוסקר אומר:

      שלום ג'ורג', מה אתה שואל כרוך התמדה הנתונים כדי לעדכן את העמודה השייכת לדרגת מפתח מסוים בטבלה ב -2 פתרונות אתה יכול לבחור: 1 תיצור DB עם השדות הדרושים לך ולהשתמש הקשר גם עם MySQL באמצעות מתאם עבור זה או של SQL Server כלול ב-Visual Studio, דרך אחרת היא באמצעות קבצים שטוחים לשמור את הנתונים בקובץ. txt ולאחר מכן להמשיך קריאה כתיבה מחדש של נתונים מסוימים , כי שתי האפשרויות שאתה צריך להגדיל את הערך עבור rewquerida טור, אתה צריך גם ליישם פונקציה להגדיל ערך זה מבוסס על מצב שאתה צריך. :)

  5. חורחה אומר:

    אלישע תודה רבה לך על תגובתך המהירה.

    אוקי נראה אני אסביר. יש לי תיבת טקסט שבה להוסיף את המוצרים שיש לי DB שלי, בסדר למשל, קוקה קולה, אני נכנס הברקוד על תיבת טקסט שלי במקרה זה יהיה 12345678, מראה טוב listview שלי תיאור המוצר עם עמודות שלי listview הם:

    קוד מוצר, תיאור כמות, מחיר המכירה, קיום.

    לאחר מכן להוסיף את המוצר לשורה שלי מלא נתונים כאלה listview שלי, אבל אם אני הכנס מחדש את הקוד של קוקה קולה, מוצג בשורה הבאה, שאני רוצה לעשות הוא שכאשר אתה מוסיף עוד פעם אחת את המוצר עצמו ולא בשורה חדשה, רק לשנות את מספר כמות הטור שלי, בתמורה במקרה זה ל 2.

    זה יותר ND שאני רוצה לעשות, אם אני יכול להגיד פחות או יותר לענות על שאלה זו הייתי מעריך את זה.

    תודה

    • אלישע אומר:

      ובכן, עכשיו הוא קצת קל יותר.

      הדבר הראשון שאתה עושה לפני החדרת הקו החדש הוא לחצות את listview כדי לבדוק אם נכנס כבר את הקוד שאתה מנסה להוסיף.
      מה שאתה עושה עבור כל אחד, למשל

      "אני חושב משתנה כדי לציין אם מצאתי את הקוד כבר קיים
      דים קיים כפי בוליאני = False
      עבור כל פריט כמו ListViewItem ב listviewProductos.items
      אז אם item.text = txtCodigo.text
      "אם באת לכאן, משום שהוא טעון כבר
      עמום cantidadAnterior כמספר שלם = CType (item.subitm (2). טקסט, מספר שלם)
      item.subitem (2). cantidadAnterior + טקסט = CType (txtCantidad.text, מספר שלם)
      "אם אתה מוצא אתה שם לב שהיה קיים כבר
      קיים = True
      סוף אם
      הבא

      אם לא אז יש
      "כאן זה לא נמצא מכן הכנס
      סוף אם

      ובכן, Espro לשרת ... אתה לא יכול לשלול את טרנר טעות דפוס מאז כתבתי אותו ישירות כאן

      אבל בטוח שאתה תשרת

  6. חורחה אומר:

    שוב תודה,

    להתראות ציין שאם הייתי עובד על הבעיה על ידי שינוי הערך של העמודה כמות, מה שקורה הוא שאני חילוץ ערכים ממסד נתונים MySQL אני מראה נראה כמו קוד להדפיס listview שלי

    Listview Private Sub ()
    אני דים כמספר שלם
    דים של כמספר שלם
    ספירת דים כמספר שלם
    דים סיכום ביניים כפי כפולה
    רשימת דים כמו חדש ListViewItem

    כמחרוזת חדש דים MySqlCommand ("SELECT * FROM מוצרי איפה ProductCode = '" & txtCodigoBarras.Text & "'", con)

    cadena.ExecuteReader mysqldr = ()

    בעוד mysqldr.Read ()
    רשימת = 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 ("מניות")))
    סוף בעוד

    דים קיים כפי בוליאני = False

    עבור כל פריט כמו ListViewItem ב ListView1.Items
    אז אם item.Text = txtCodigoBarras.Text
    דים CantidadAnterior כמספר שלם = CType (listar.SubItems (2). טקסט, מספר שלם)
    listar.SubItems (2). טקסט = cantidadAnterior + CType (mysqldr ("כמות"), מספר שלם)
    קיים = True
    סוף אם
    הבא
    אם לא אז יש
    סוף אם

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

    עבור s = 0.0 כדי ListView1.Items.Count - 1
    סכום ביניים = סכום ביניים + ListView1.Items (ים). SubItems (3). טקסט
    הבא
    lbLSubTotal.Text = "$" & Format (סיכום ביניים, "0.00")

    עבור i = 0 עד ListView1.Items.Count - 1
    נגד = counter + ListView1.Items (אני). SubItems (2). טקסט
    הבא
    Me.lblContador.Text = נגד

    mysqldr.Close ()
    End Sub

    קוד ביליתי כל כך ליישם את זה ולראות את התוצאות בתמונה הבאה:

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

  7. חורחה אומר:

    חבר haha ​​מצטער אם אני כועס על כל כך הרבה שאלות, אבל אני מוצא פחות או יותר את הבעיה, למשל להציג את המוצר

    DORITOSNAC

    מוכנס בשורה הראשונה וכאשר שמתי DORITOSNAC מודפס על השורה השניה, אך הציג כבר את השינויים הראשונים את הערך שלו הכמות 2, והוא מודפס להיכנס שוב בשורה 3, אך לא פחות משורה 1 משנה את הערך שלו 3

    אז אם txtCodigoBarras.Text = txtCodigoBarras.Text
    דים קיים כפי בוליאני = False
    עבור כל פריט כמו ListViewItem ב ListView1.Items
    אז אם item.Text = txtCodigoBarras.Text
    דים CantidadAnterior כמספר שלם = CType (item.SubItems (2). טקסט, מספר שלם)
    item.SubItems (2). טקסט = cantidadAnterior + CType (lblCantidadProd.Text, מספר שלם)
    קיים = True
    סוף אם
    הבא
    אם לא אז יש
    סוף אם

    בוא נראה אם ​​אני מקבל את זה עכשיו, אם לא כל הסבר מצידך יהיה אסיר תודה.

  8. חורחה אומר:

    מושגת כבר לפתור תודה רבה על התמיכה לקבל את הפתרון:

    ספירת דים כמספר שלם
    עבור j כמספר שלם = 0 עד Me.ListView1.Items.Count - 1
    אם Me.ListView1.Items (י). SubItems (0). ואז = טקסט txtCodigoBarras.Text
    ספירת = CINT (Me.ListView1.Items (י). SubItems (2). טקסט) + 1
    Me.ListView1.Items (י). SubItems (2). טקסט = ספירת
    צא Sub

הערה