Int to String: لا يمكن تحويلها من "مجموعة الأسلوب" إلى "سلسلة" [مغلقة

StackOverflow https://stackoverflow.com/questions/729642

سؤال

لدي ListView على النموذج الخاص بي. أريد أن أضيف أشياء لها أشرار البرنامج قيد التشغيل.

هذا هو الرمز الذي أستخدمه

public void FillList(string[] Name,int[] empty,int[] Population,int[] Max,int[] Check,int size)
{
    if (this.InvokeRequired)
    {
        this.Invoke((MethodInvoker)delegate
        {
            for (int i = 0; i < size; i++)
            {
                ListViewItem item = new ListViewItem(Name[i]);

                item.SubItems.Add(empty[i].ToString); //error
                item.SubItems.Add(Population[i].ToString); //error
                item.SubItems.Add(Max[i].ToString);   //error

                if (Check != 1)
                    item.SubItems.Add("No");
                else
                    item.SubItems.Add("Yes");
                listView1.Items.Add(item);
            }
        });
    }
}

يجب أن تكون المعلمة سلسلة وحاولت .ToString, ، لكنني أحصل على هذا:

الوسيطة '1': لا يمكن تحويلها من "مجموعة الأسلوب" إلى "السلسلة"

هل كانت مفيدة؟

المحلول

أنت تفتقد قوسين من طريقة الاتصال:

ToString()

بدون قوسين، التعبير هو طريقة المجموعة- أي، إشارة إلى أساليب واحدة أو أكثر من الزائد.

نصائح أخرى

لقد نسيت الأقواس.

يجب أن يكون .ToString()

جون هذا خارج الموضوع ولكن هل فكرت في هذه الطريقة لتمرير في فئة تتكون من كل عنصر من العناصر الفرعية لإضافتها. وبالتالي:

class ListItem 
{
 public string Name {get; set;}
 public int Empty {get; set;}
 public int Population {get; set;}
 public int Max {get; set;}
 public bool Checked {get; set;}
} 

وبهذه الطريقة، ستحتاج إلى الحصول على كل عنصر من العناصر الموجودة في الصفائف التي تم تمريرها في تصطف. غالبا ما تكمن في محاولة تكوين العناصر في العديد من المصفوفات واجهات صعبة الاستخدام. سوف طريقة الخاص بك تبدو

FillList(IList<ListItem> listItems)
{
if (this.InvokeRequired)
    {
        this.Invoke((MethodInvoker)delegate
        {
            foreach (ListItem listItem in listItems)
            {
                ListViewItem item = new ListViewItem(listItem .Name);

                item.SubItems.Add(listItem.Empty.ToString());
                item.SubItems.Add(listItem.Population.ToString());
                item.SubItems.Add(listItem.Max.ToString());

                item.SubItems.Add(listItem.Checked ? "No" : "Yes");

                listView1.Items.Add(item);
            }
        }
    }
}

لقد كتبت فقط هذا الرمز مباشرة لذلك ربما هناك بعض تنظيف الكود المطلوب

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top