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

نسخة كاملة : اضافة صور فى subitem
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
اريد اضافة صور فى subitem معينة استخدم هذا الكود لاكن المشكلة عند تغير الصورة يتم تغيرها لكل الصزر الموجودة فى هذا ال subitem
كود :
           private void ListView1_DrawColumnHeader(object sender, System.Windows.Forms.DrawListViewColumnHeaderEventArgs e)
       {
           e.DrawDefault = true;
       }

       private void ListView1_DrawSubItem(object sender, System.Windows.Forms.DrawListViewSubItemEventArgs e)
       {
           if ((e.Item.SubItems(3) == e.SubItem))
           {
               e.DrawDefault = false;
               e.DrawBackground();
               e.Graphics.DrawImage(Properties.Resources.test, e.SubItem.Bounds.Location);
              // e.Graphics.DrawString(e.SubItem.Text, e.SubItem.Font, new SolidBrush(e.SubItem.ForeColor), (e.SubItem.Bounds.Location.X + My.Resources.test.Width), e.SubItem.Bounds.Location.Y);
           }
           else
           {
               e.DrawDefault = true;
           }
يا أسامة،

هذا تعديل للكود، وحددت لك الأسطر التي لا يمكن حذفها أو تعديلها بكملة ضرور،

طبعاً الخاصية OwnerDraw لأداة listView1 ضعها true بدل السطر الموجود في الحدث Form1_Load عشان تختصر الكود.

أنا استخدمت اسم الأداة أول حرف صغير يعني listView1 وليس ListView1 عشان يمشي مع طريقة #C في تسمية الأدوات وعدل الاسم إذا ما ناسبك.

PHP كود :
private void Form1_Load(object senderEventArgs e) {
    
listView1.OwnerDraw true// هذه الخاصية ضرورية وتقدر تحددها من الخصائص بدل ما تحط هذا السطر في حدث التحميل
}


private 
void listView1_DrawColumnHeader(object senderDrawListViewColumnHeaderEventArgs e) {
    
e.DrawDefault true// ضروري
}


private 
void listView1_DrawSubItem(object senderSystem.Windows.Forms.DrawListViewSubItemEventArgs e) {
    if (
e.Item.SubItems[3] == e.SubItem) {

        if (
e.Item.Selected && ((ListView)sender).Focused) {
            
e.Graphics.FillRectangle(new SolidBrush(SystemColors.MenuHighlight), e.Bounds);
        }
        
e.DrawText(TextFormatFlags.Right); // إذا رغبت بطباعة النص في اليمين

        
var imageRect = new Rectangle(e.Bounds.Xe.Bounds.Ye.Bounds.Heighte.Bounds.Height);
        
e.Graphics.DrawImage(Properties.Resources.testimageRect);
    }
    else {
        
e.DrawDefault true// ضروري
    
}

(15-07-16, 08:31 AM)الوادي كتب : [ -> ]يا أسامة،

هذا تعديل للكود، وحددت لك الأسطر التي لا يمكن حذفها أو تعديلها بكملة ضرور،

طبعاً الخاصية OwnerDraw لأداة listView1 ضعها true بدل السطر الموجود في الحدث Form1_Load عشان تختصر الكود.

أنا استخدمت اسم الأداة أول حرف صغير يعني listView1 وليس ListView1 عشان يمشي مع طريقة #C في تسمية الأدوات وعدل الاسم إذا ما ناسبك.

PHP كود :
private void Form1_Load(object senderEventArgs e) {
 
   listView1.OwnerDraw true// هذه الخاصية ضرورية وتقدر تحددها من الخصائص بدل ما تحط هذا السطر في حدث التحميل
}


private 
void listView1_DrawColumnHeader(object senderDrawListViewColumnHeaderEventArgs e) {
 
   e.DrawDefault true// ضروري
}


private 
void listView1_DrawSubItem(object senderSystem.Windows.Forms.DrawListViewSubItemEventArgs e) {
 
   if (e.Item.SubItems[3] == e.SubItem) {

 
       if (e.Item.Selected && ((ListView)sender).Focused) {
 
           e.Graphics.FillRectangle(new SolidBrush(SystemColors.MenuHighlight), e.Bounds);
 
       }
 
       e.DrawText(TextFormatFlags.Right); // إذا رغبت بطباعة النص في اليمين

 
       var imageRect = new Rectangle(e.Bounds.Xe.Bounds.Ye.Bounds.Heighte.Bounds.Height);
 
       e.Graphics.DrawImage(Properties.Resources.testimageRect);
 
   }
 
   else {
 
       e.DrawDefault true// ضروري
 
   }


لا يزال يتم تغير الصور التى تم اضافتة اذا تم تغير الصوره
كود :
       private void listView1_DrawSubItem(object sender, System.Windows.Forms.DrawListViewSubItemEventArgs e)
       {
           if (e.Item.SubItems[3] == e.SubItem)
           {

               if (e.Item.Selected && ((ListView)sender).Focused)
               {
                   e.Graphics.FillRectangle(new SolidBrush(SystemColors.MenuHighlight), e.Bounds);
               }
               e.DrawText(TextFormatFlags.Right); // إذا رغبت بطباعة النص في اليمين

               var imageRect = new Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Height, e.Bounds.Height);
               if (checkBox1.Checked == false)
               {

                   e.Graphics.DrawImage(Properties.Resources.test, imageRect);
               }
               else
               {
                   e.Graphics.DrawImage(Properties.Resources.test1, imageRect);
               }
           }
           else
           {
               e.DrawDefault = true; // ضروري
           }
       }
إذا كان قصدك أن تضع الصورة في submit لصف محدد فعندها يجب الاعتماد على معلومة في ذلك الصف

لدينا الاعمدة (الاسم والتاريخ والموقع والحالة)

عند اضافة صف مثل
الاسم: أسامة
التاريخ: 16/7/2016
الموقع: vb4arb.com
الحالة: test

هنا نختبر النص الموجود في عمود (الحالة) عندما يكون "test" نقوم برسم الصورة فيكون جزء الكود
PHP كود :
if (e.SubItem.Text == "test") {
        var 
imageRect = new Rectangle(e.Bounds.Xe.Bounds.Ye.Bounds.Heighte.Bounds.Height);
        
e.Graphics.DrawImage(Properties.Resources.testimageRect);

(16-07-16, 05:04 AM)الوادي كتب : [ -> ]إذا كان قصدك أن تضع الصورة في submit لصف محدد فعندها يجب الاعتماد على معلومة في ذلك الصف

لدينا الاعمدة (الاسم والتاريخ والموقع والحالة)

عند اضافة صف مثل
الاسم: أسامة
التاريخ: 16/7/2016
الموقع: vb4arb.com
الحالة: test

هنا نختبر النص الموجود في عمود  (الحالة) عندما يكون "test" نقوم برسم الصورة فيكون جزء الكود
PHP كود :
if (e.SubItem.Text == "test") {
 
       var imageRect = new Rectangle(e.Bounds.Xe.Bounds.Ye.Bounds.Heighte.Bounds.Height);
 
       e.Graphics.DrawImage(Properties.Resources.testimageRect);


جزاك الله خير اخى