تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[كود] مشكلة فى كود DrawSubItem
#1
عندى listview يوجد بها 15 Columns اريد اضافة الصور فى ال15 Columns subitems المشكلة ان الكود يعمل تعليق فى الفورم


كود :
   Private Sub Listview1_DrawSubItem(sender As Object, e As DrawListViewSubItemEventArgs) Handles Listview1.DrawSubItem
       Try
           Dim imgs = New Rectangle(e.Bounds.Location.X, e.Bounds.Location.Y, e.Bounds.Height, e.Bounds.Height)
           If (e.SubItem.Text = e.SubItem.Text) Then
               e.Graphics.DrawImage(Image.FromFile(Application.StartupPath & "\Images\" + e.SubItem.Text + ".png"), imgs)
           Else
               e.DrawDefault = True
           End If
       Catch ex As Exception

       End Try
   End Sub
جربت فحص اذا تم اضافة item جديد يتم اضافة الصوره الخاصة بها لاكن عند الفحص يتم اذالة جميع الصور من subitems كلها علاشان الكود يحتوى على loop ليرسم على subitems و هو الذى يسبب التعليق فى الفورم حل يوجد حل لهذه المشكلة
الرد }}}}
تم الشكر بواسطة:
#2
سؤال : هل الأمر إجباري بالنسبة لك ان تكون الصور في فهرس المشروع؟
ان لم يكن هذا شرطا اجباريا هنا حاول ان تضع الصور في Resources المشروع أو في imageList و تقراها قبل بدء الفورم ثم ترسمها و لتري ما يحدث معك بعد ذلك
الرد }}}}
تم الشكر بواسطة: أسامة
#3
(07-08-16, 05:45 AM)silverlight كتب : سؤال : هل الأمر إجباري بالنسبة لك ان تكون الصور في فهرس المشروع؟
ان لم يكن هذا شرطا اجباريا هنا حاول ان تضع الصور في Resources المشروع أو في imageList و تقراها قبل بدء الفورم ثم ترسمها و لتري ما يحدث معك بعد ذلك

اجل الامر اجاريآ
الرد }}}}
تم الشكر بواسطة:
#4
لماذا لا تستخدم داتا جريد فيو؟
الرد }}}}
تم الشكر بواسطة: أسامة , أسامة
#5
(07-08-16, 05:05 AM)أسامة كتب : جربت فحص اذا تم اضافة item جديد يتم اضافة الصوره الخاصة بها لاكن عند الفحص يتم اذالة جميع الصور من subitems كلها علاشان الكود يحتوى على loop ليرسم على subitems و هو الذى يسبب التعليق فى الفورم حل يوجد حل لهذه المشكلة

("" لاكن عند الفحص يتم اذالة جميع الصور"")
ماهو الفحص؟
وأين هي الـ loop التي ترسم subItems؟
وهل كتبت كود في حدث DrawItem ؟ إذا نعم أرنا إياه لعل المشكلة به
الرد }}}}
تم الشكر بواسطة: أسامة
#6
الأخ أسامة

حاول تكتب برنامج بسيط منفصل للمشكلة بحيث تستخدم نفس الكود الخاص بالرسم و ترفع المثال لو سمحت
الرد }}}}
تم الشكر بواسطة: أسامة
#7
وجدت المشكلة

المشكلة فى  e.SubItem.Text.Substring(0, 10) & "_" & e.SubItem.Text.Substring(11, 1)الكود يعمل بدون تعليق اذا كان عدد الصور فى المجلد صغير لماذا استخدم هذه الطريقة الان اسم الصور مثل هذا Ahmed_0 الاسم _ الرقم
عدد الصور فى مجلد الصور هو 8262 صورة تم ارفاق مثال صغير لاكن لا يوجد تعليق فى هذا المثلا بسبب يوجد 15 صورة فقط فى المجلد لا اعتقد انه يوجد حل لى 8262 صورة


الملفات المرفقة
.rar   WindowsApplication1.rar (الحجم : 84.21 ك ب / التحميلات : 5)
الرد }}}}
تم الشكر بواسطة:
#8
بغض النظر عن الخطأ في رسم String لكن سبب المشكلة الأصلي هو ان عدد الصور ضخم جدا
ومع هذا العدد الضخم من الصور يكون امرا طبيعيا ان يأخذ الكمبيوتر وقتا لتنفيذ المطلوب منه
عليك ان تجد حلا لتفادي مشكلة Hanging او التعليق أثناء عملية الرسم

أنت تحتاج الي أن تقوم بعمل Caching  للصور أو بمعني أدق عليك أن  تقرأها علي مراحل و ليس علي مرة واحدة
وبشكل عمللي انت تحتاج الي قراءة الصور في بداية تشغيل البرنامج و تخزينها في مصفوفة او مصفوفات و ترسم فقط ما يظهر للمستخدم من ListViewSubItems

ربما قد يكون هناك حلول اخري و هي انك تخزن الصور في صورة Bytes

سؤالي لك هل عدد الصور سيتزايد ام سيكون ثابتا علي الرقم 8262 ؟
الرد }}}}
تم الشكر بواسطة:
#9
(07-08-16, 06:20 PM)silverlight كتب : بغض النظر عن الخطأ في رسم String لكن سبب المشكلة الأصلي هو ان عدد الصور ضخم جدا
ومع هذا العدد الضخم من الصور يكون امرا طبيعيا ان يأخذ الكمبيوتر وقتا لتنفيذ المطلوب منه
عليك ان تجد حلا لتفادي مشكلة Hanging او التعليق أثناء عملية الرسم

أنت تحتاج الي أن تقوم بعمل Caching  للصور أو بمعني أدق عليك أن  تقرأها علي مراحل و ليس علي مرة واحدة
وبشكل عمللي انت تحتاج الي قراءة الصور في بداية تشغيل البرنامج و تخزينها في مصفوفة او مصفوفات و ترسم فقط ما يظهر للمستخدم من ListViewSubItems

ربما قد يكون هناك حلول اخري و هي انك تخزن الصور في صورة Bytes

سؤالي لك هل عدد الصور سيتزايد ام سيكون ثابتا علي الرقم 8262 ؟

سيكون ثابتا علي الرقم 8262
الرد }}}}
تم الشكر بواسطة:
#10
أخي الفاضل أسامة

انت تحتاج الي استخدام اسلوب أخر لتخزين الصور في المشروع خاصة أن حجم الصور ضخم وكما لاحظت من مشروعك فإن الصور التي تستخدمها عبارة عن ايقونات

بشكل مبدئي فإن الحل الأمثل لك هو ان تقوم بتخزين الصور في مصفوفة أو في ملف و الفكرة هنا هي حفظ الصور بأسلوب أخر و الحفظ إما أن يكون علي هيئة Bytes او علي هيئة IntPtr
ثم وعند الحاجة تقوم بتحويل Bytes أو IntPtr الي صورة
و أهم مميزات هذا الأسلوب أن حجم مشروعك سيصبح أقل و لن تستهلك كثيرا من الذاكرة

عموما الكلام النظري حلو و سهل و لكي نتأكد من أن ما أقوله مناسبا لك فعلينك تحويل هذا الكلام النظري الي تطبيق عملي في شكل أكواد

لكن قبل هذا أرجو أن تجيب سؤالي التالي
لماذا تريد أن تملأ ListView بهذا الكم من الأيقونات ؟
إن أوضحت لي أسبابك في ذلك فلربما نجد حلا بديلا أسهل
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مشكلة في البحث بالتاريخ ____وايضا ____ بين تاريخين khaled12345 7 134 24-05-17, 03:55 PM
آخر رد: khaled12345
  [VB.NET] مشكلة في تعلم لغة vb.net anis789 3 104 24-05-17, 03:08 AM
آخر رد: silverlight
  مشكلة تفعيل ظهور checkbox في الفورم عامر الجبوري 4 87 21-05-17, 02:22 PM
آخر رد: alma2
  حل مشكلة " البرامج لا تعمل" عبدالرحمن المكاوي 4 89 20-05-17, 12:43 AM
آخر رد: عبدالرحمن المكاوي
  مشكلة في كود البحث فرجاء المساعدة khaled12345 5 94 19-05-17, 03:50 PM
آخر رد: khaled12345
  [VB.NET] حل مشكلة الارقام في الاداة DataGridview أبو نقطة 2 56 19-05-17, 12:10 PM
آخر رد: alma2
  مشكلة في كود جملة ال insert khaled12345 2 64 14-05-17, 10:20 AM
آخر رد: khaled12345
  [VB.NET] مشكلة بسيطة في برنامج بسيط يعتمد على( Multi-Threading) أبو نقطة 5 141 13-05-17, 07:41 AM
آخر رد: أبو نقطة
  مشكلة فى المشروع MOSTAFA.KAMEL 9 214 06-05-17, 03:46 AM
آخر رد: zinom
  [VB.NET] طلب حل مشكلة هذا الكود A-R 3 97 02-05-17, 05:10 PM
آخر رد: A-R

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم