Listview : العنصر مرئيا دائما

كلما تم إضافة عناصر جديدة إلى ListViewItems تحكم ListView ، وهذه هي عديدة بحيث عنصر التحكم لا يكون لديك مساحة كافية لعرضها على الشاشة ، إضافة شريط التمرير العمودي. هذا هو الكمال ، وليس فقط افتراضيا أن تضاف بنود جديدة.

اليوم أريد أن تظهر كيفية حل هذه المشكلة قليلا.

الضوابط الأساسية البصرية. مخروط صافي يكون ListView تعطينا مجموعة رائعة من خصائص التكوين ، بحيث غالبا ما تكون غير معروفة.

تبين لي مثال بسيط. لهذا نحن بحاجة إلى نموذج ، عنصر تحكم ListView والزر.

listviewItemSiempreVisible001

الخصائص التي تهمنا هي :

  • HideSelection : تعيينها إلى false حتى على الرغم من أن تحكم ListView لا يكون التركيز ، ما زلنا نرى ما هي العنصر المحدد.
  • ListView1.FocusedItem.EnsureVisible () لقوة العنصر المحدد ليكون مرئيا دائما.

حسنا ، الآن إذا كان رمز :

     خاصة Form1_Load الفرعية (الأساسية ByVal المرسل والبريد System.Object الأساسية ByVal ، كما System.EventArgs) مقابض MyBase.Load
         ListView1.HideSelection = خطأ
         = صحيح ListView1.FullRowSelect
         ListView1.MultiSelect = خطأ
     نهاية الفرعية

     خاصة Button1_Click الفرعية (الأساسية ByVal المرسل والبريد System.Object الأساسية ByVal ، كما System.EventArgs) مقابض Button1.Click
         ثابت ط ك 0 = صحيح
         ط = 1 +
         ListView1.Items.Add (نيو ListViewItem ("البند رقم" & I))
         ListView1.Items (ListView1.Items.Count -- 1). مختارة = صحيح
         ListView1.Items (ListView1.Items.Count -- 1). المركزة = صحيح

         ListView1.FocusedItem.EnsureVisible ()
     نهاية الفرعية

عند تشغيل يجب أن يكون مشابها جدا لأنه يظهر في هذه الصورة :

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- من واحد في listview /
      أي أسئلة أخرى لا تتردد في الاتصال بي.

      التحيات

    • أوسكار ويقول :

      مرحبا جورج ، ما ينطوي على استمرار تسأل لتحديث البيانات وعمود ينتمون إلى رتبة مفتاح معين في جدول 2 الحلول التي يمكن أن تختار : أولا تقوم بإنشاء قاعدة بيانات مع الحقول التي تحتاج إليها واستخدام الخلية إما باستخدام اتصال أو محول المدرجة في استوديو مرئي SQL Server أو وسيلة أخرى من خلال ملفات منفصلة حفظها في ملف البيانات. TXT ومن ثم الشروع في القراءة وإعادة كتابة بعض البيانات ، لكل من الخيارات كما تحتاج إلى زيادة قيمة لrewquerida العمود ، يجب عليك أيضا استخدام وظيفة التي تزيد هذه القيمة على أساس الشرط الذي يتطلب. :)

  5. خورخي يقول :

    اليشا شكرا جزيلا لردكم السريع.

    موافق تبدو ساوضح. كنت أود أن يكون في مربع نص الذي أود أن أضيف المنتجات لدي DB في بلدي ، طيب على سبيل المثال ، كوكا كولا ، وأدخل في مربع نص الباركود بلدي في هذه الحالة سيكون 12345678 ، يظهر جيدا في listview بلدي وصف المنتج مع أعمدتي listview هي :

    رمز المنتج ، والوصف ، الكمية ، سعر البيع ، والوجود.

    ثم إضافة المنتج إلى خط بلادي الكامل لمثل هذه البيانات في listview بلدي ، ولكن إذا كنت إعادة إدراج رمز من الكوكا كولا ، ويظهر في الصف التالي ، والذي أود القيام به هو أنه عند إدراج آخر مرة واحدة في مكان عرض المنتج نفسه في صف جديد ، فقط تغيير في عدد من الكمية مقالي ، في هذه الحالة تبادل إلى 2.

    هذا أكثر مما كنت تريد أن تفعل الثانية إذا كان بإمكاني أن أقول أكثر أو أقل إجابة على هذا السؤال كنت نقدر ذلك.

    شكرا

    • أليشع يقول :

      حسنا ، والآن هو أخف قليلا.

      وأول شيء تفعله قبل ادخال خط جديد لعبور يكون ListView للتحقق مما إذا كنت قد دخلت بالفعل الكود الذي تحاول إدراج.
      أن تفعل مع كل منها ، على سبيل المثال

      واضاف "اعتقد متغير ليقول لي إذا كان رمز وجدت أن هناك
      خافت وجود خطأ ومنطقية =
      لكل بند كما ListViewItem في listviewProductos.items
      ثم إذا item.text = txtCodigo.text
      "إذا أتيت هنا لأنه تم تحميلها مسبقا
      cantidadAnterior قاتمة وصحيح = CType (النص. item.subitm (2) ، صحيح)
      item.subitem (2). cantidadAnterior + نص = CType (txtCantidad.text ، صحيح)
      "إذا لاحظت وجدت أنها موجودة بالفعل
      صحيح هناك =
      النهاية ، اذا كان
      التالي

      ثم إذا لم يكن هناك
      "ها أنا أدخله ولكن وجدت
      النهاية ، اذا كان

      حسنا ، Espro خدمتك... لا يمكن استبعاد golde مطبعي منذ كتبت هنا مباشرة

      لكنه متأكد من أنك سوف تخدم

  6. خورخي يقول :

    شكرا مرة أخرى ،

    ننظر لي أنه إذا علق على النتيجة في مسألة منحت لتغيير قيمة العمود الكمية ، فإن ما يحدث هو أنني استخراج القيم من قاعدة بيانات MySQL ينظر إلى رمز تظهر لك كيفية طباعة listview بلدي

    Listview الفرعية الخاصة ()
    كما انني قاتمة صحيح
    ق قاتمة وصحيح
    العد قاتمة وصحيح
    المجموع الفرعي تبهيت ومزدوجة
    قائمة قاتمة كما ListViewItem جديد

    وسلسلة جديدة تبهيت MySqlCommand ("SELECT * FROM المنتجات التي ProductCode =' "& txtCodigoBarras.Text &" '" ، يخدع)

    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 ("الأسهم")))
    ورغم نهاية

    خافت وجود خطأ ومنطقية =

    لكل بند كما ListViewItem وفي ListView1.Items
    ثم إذا txtCodigoBarras.Text item.Text =
    CantidadAnterior تبهيت وصحيح = CType (listar.SubItems (2). النص ، صحيح)
    listar.SubItems (2). cantidadAnterior + نص = CType (mysqldr ("الكمية") ، صحيح)
    صحيح هناك =
    نهاية إذا
    التالي
    ثم إذا لم يكن هناك
    نهاية إذا

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

    ليالي لListView1.Items.Count = 0.0 -- 1
    المجموع = المجموع الفرعي + ListView1.Items (ق). فرعية (3). النص
    التالي
    lbLSubTotal.Text = "$" & تنسيق (المجموع الفرعي ، "0.00")

    لط = 0 إلى ListView1.Items.Count -- 1
    العداد = العداد + ListView1.Items (ط). فرعية (2). النص
    التالي
    Me.lblContador.Text = العداد

    mysqldr.Close ()
    نهاية الفرعية

    قضيت البرمجية التي تنفذ بشكل جيد ونرى النتائج في الصورة التالية :

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

  7. خورخي يقول :

    هاها صديق آسف إذا كنت يزعج الكثير من الأسئلة ، ولكن أنا وجدت أكثر أو أقل من المشكلة ، ويعرض على سبيل المثال منتج

    DORITOSNAC

    طبعت يتم إدراجها في الصف الأمامي وعندما أضع طبعت DORITOSNAC في الصف الثاني ولكن قد أدخلت بالفعل التغييرات الأولى قيمتها إلى 2 من الكم وإعادة الدخول من جديد في صف واحد ولكن على قدم المساواة 3 1 الصف بتغيير القيمة إلى 3

    ثم إذا txtCodigoBarras.Text txtCodigoBarras.Text =
    خافت وجود خطأ ومنطقية =
    لكل بند كما ListViewItem وفي ListView1.Items
    ثم إذا txtCodigoBarras.Text item.Text =
    CantidadAnterior تبهيت وصحيح = CType (item.SubItems (2). النص ، صحيح)
    item.SubItems (2). cantidadAnterior + نص = CType (lblCantidadProd.Text ، صحيح)
    صحيح هناك =
    نهاية إذا
    التالي
    ثم إذا لم يكن هناك
    نهاية إذا

    دعونا نرى ما اذا كان يمكنني الحصول عليه الآن إن لم يكن أي تفسير من جانبكم سوف نكون ممتنين.

  8. خورخي يقول :

    يحل بالفعل جزيل الشكر على دعمكم الحصول على الحل :

    العد قاتمة وصحيح
    وصحيح لي = 0 إلى Me.ListView1.Items.Count -- 1
    إذا Me.ListView1.Items (ي). فرعية (0). TxtCodigoBarras.Text النص ثم =
    العد = الدالة CInt (Me.ListView1.Items (ي). فرعية (2). النص) + 1
    Me.ListView1.Items (ي). فرعية (2). النص العد =
    خروج الفرعية

تعليق