منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : اضافة صور فى subitem
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
وجدت وضوع يتكلم هن هذا http://vb4arb.com/vb/thread-16450.html لاكن يوجد مشكلة واحدة فقط انه لايمكن اضافة اكثر من صوره عند اضافة صوره اخرى يتم تغير جميع الصور هل من حل

كود :
   Private Sub ListView1_DrawSubItem(sender As Object, e As DrawListViewSubItemEventArgs) Handles ListView1.DrawSubItem
       For Each itm As ListViewItem In ListView1.Items
           If e.SubItem.Text = itm.SubItems(1).Text Then
               Dim imageRect = New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height)
               e.Graphics.DrawString(e.SubItem.Text, e.SubItem.Font, New SolidBrush(e.SubItem.ForeColor), (e.SubItem.Bounds.Location.X + 15), e.SubItem.Bounds.Location.Y + 3)
               e.Graphics.DrawImage(Image.FromFile(Application.StartupPath + "\Data\" + TextBox2.Text + ".png"), imageRect)
           Else
               e.DrawDefault = True
           End If
       Next
   End Sub

   Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       ListView1.OwnerDraw = True
   End Sub

   Private Sub ListView1_DrawColumnHeader(sender As Object, e As DrawListViewColumnHeaderEventArgs) Handles ListView1.DrawColumnHeader
       e.DrawDefault = True
   End Sub
السلام عليكم

جرب التعديل، تم الغاء كتابة النص في العمود المحدد واستغلال النص على أنه اسم الصورة من المجلد Data
كود :
  Private Sub ListView1_DrawSubItem(sender As Object, e As DrawListViewSubItemEventArgs) Handles ListView1.DrawSubItem
          If e.ColumnIndex = 1 Then
              Dim imageRect = New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height)
              'e.Graphics.DrawString(e.SubItem.Text, e.SubItem.Font, New SolidBrush(e.SubItem.ForeColor), (e.SubItem.Bounds.Location.X + 15), e.SubItem.Bounds.Location.Y + 3)
               Dim imgFilename As String = Application.StartupPath + "\Data\" + e.SubItem.Text
               Dim img As Image = New PictureBox().ErrorImage
               If IO.File.Exists(imgFilename) Then img = Image.FromFile(imgFilename)
               e.Graphics.DrawImage(img, imageRect)
          Else
              e.DrawDefault = True
          End If
  End Sub

  Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
      ListView1.OwnerDraw = True
  End Sub

  Private Sub ListView1_DrawColumnHeader(sender As Object, e As DrawListViewColumnHeaderEventArgs) Handles ListView1.DrawColumnHeader
      e.DrawDefault = True
  End Sub


تم تعديل الكود بعد مراجعته مرة أخرى
تم عديل الكود

عند إضافة بيانات احرص على دقة اسم الصورة مع نوعها في العمود الثاني (تبدأ رقام الأعمدة برقم صفر) مثل هذا الكود
كود :
ListView1.Items.Add(New ListViewItem({"موظف", "emp.png"}))

التعديل الذي أجريته يعمل على إظهار صورة X إذا اتضح عدم وجود الصورة أو خطأ في اسم الصورة أو مسارها
تم عديل الكود
(20-01-17, 02:32 AM)مساعدة كتب : [ -> ]تم عديل الكود

المشكلة فى Application.StartupPath + "\Data\" + e.SubItem.Text يجب ان يكون هذا هو المسار لكى يعمل اذا كان Application.StartupPath + "\Data\" + textbox.Text يتم ازالة الصورة عند اضافة item اخرى
عندي لا توجد المشكلة التي ذكرتها.

فضع مشروعك لمعرفة المشكلة لديك وإيجاد الحل المناسب.
(20-01-17, 10:59 PM)مساعدة كتب : [ -> ]عندي لا توجد المشكلة التي ذكرتها.

فضع مشروعك لمعرفة المشكلة لديك وإيجاد الحل المناسب.

شكرآ كان يوجد مشكلة فى الكود و تم حلها بحمد الله