将列表框号码复制到数组c#

时间:2017-08-16 23:40:50

标签: c# winforms listbox

我正在尝试将列表框中的项目复制到数组中。 但我在这里遗漏了一些东西我得到错误方法名称预期。

我有三个错误:

错误CS1955非可调用成员' ListBox.Items'不能像方法一样使用。

错误CS0201只能将赋值,调用,递增,递减和新对象表达式用作语句

错误CS0149方法名称预期为WindowsFormsApp6

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

    }
    int i;
    private void Form1_Load(object sender, EventArgs e)
    {


        Random rand = new Random();
        for (i = 0; i <= 10; i++)
        {
            listBox1.Items.Add(rand.Next(0, 10));
        }


    }

    private void button1_Click(object sender, EventArgs e)
    {


    }

    private void label1_Click(object sender, EventArgs e)
    {


        for (i = 0; i <= listBox1.Items.Count - 1; i++)
        {
            string[] strArray = new string[11];

            strArray(i) == listBox1.Items(i);

            label1.Text = "Coppied items"; 


        }
    }
}

4 个答案:

答案 0 :(得分:0)

在这一行:

strArray(i) == listBox1.Items(i);

有两个问题。

  1. 使用[]访问数组,而不是括号。
  2. 您打算使用=运算符来分配值,而不是==。 &#39; ==&#39;是为了检查条件。
  3. 结果:

    strArray[i] = listBox1.Items[i];
    

答案 1 :(得分:0)

代码存在许多问题。您的问题的主要答案是您使用方括号而不是括号来引用数组项。

但您也不需要在班级声明您的i变量。它应该在for循环中所需的最低范围内声明。

您还应该在循环外声明strArray,否则每次都会重新创建。我不清楚你是否应该在方法或类级别声明它,因为你没有显示任何实际使用它的代码。

此外,在向数组添加项目时,您正在使用比较运算符(==)而不是赋值运算符(=)。

以下是解决这些问题的方法:

public Form1()
{
    InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
    Random rand = new Random();

    for (int i = 0; i <= 10; i++)
    {
        listBox1.Items.Add(rand.Next(0, 10));
    }
}

private void label1_Click(object sender, EventArgs e)
{
    string[] strArray = new string[listBox1.Items.Count];

    for (int i = 0; i < listBox1.Items.Count; i++)
    {
        strArray[i] = listBox1.Items[i];
    }

    label1.Text = "Coppied items"; 
}

答案 2 :(得分:0)

这就是我现在所拥有的。代码编译但消息未显示在标签上。

 private void button1_Click(object sender, EventArgs e)
    {
        string[] strArray = new string[listBox1.Items.Count];

        for (int i = 0; i < listBox1.Items.Count; i++)
        {
            strArray[i] = listBox1.Items[i].ToString();
        }

        label1.Text = "Coppied items";

    }

答案 3 :(得分:0)

您可以使用ListItemCollection.CopyTo方法在没有循环的情况下执行此操作。

private void label1_Click(object sender, EventArgs e)
{
    string[] strArray = new string[listBox1.Items.Count];
    listBox1.Items.CopyTo(strArray, strArray.GetLowerBound(0));
    label1.Text = "Copied items";
}