单击创建一个新的 int 列表项,并输出到组框中

Create a new int list item on click, and output into group box

我很困惑如何通过单击按钮创建新的列表项,以及如何在创建列表项后将列表项输出到列表框中。

我已经声明了列表并全局命名为coin:

List<int> coin = new List<int>();

然后点击一个名为'Enter'的按钮,我试图向列表中添加一个新项目,这将通过for循环确定列表项目的值,所以该值必须更高比当前列表中的项目数量:

    private void btnEnter_Click(object sender, EventArgs e)
    {
        for (int i = 0; i > coin.Count(); i++)
        {
            coin.Add(i);
        }
    }

然后在列表框中,我试图通过将所有列表项转换为字符串来输出所有列表项,并计算 for 循环内值的数量,如下所示:

    private void groupBox1_Enter(object sender, EventArgs e)
    {
        for (int i = 0; i < coin.Count(); i++)
        {
            string spacesOutput = coin.ToString();
            groupBox1.Text = "/" + spacesOutput;
        }
    }

点击回车按钮没有任何反应,列表框中也没有任何显示,所以我有点困惑。谢谢

您的 for 循环条件将始终设置为 false。单击回车时,coin.Count(); 为 0,i 为 0。因此,coin.Add() 永远不会被调用,也没有任何反应。修改您的 for 循环,以便调用 Add();,例如

for (int i = 0; i <= coin.Count(); i++) coin.Add(i);

这样,如果集合中没有硬币,for循环仍然会运行一次。

此外,在您的组框中,coin.ToString(); 指的是 List 本身,而不是个人 'coin'。您想使用 for 循环的 i 来选择元素,即 string spacesOutput = coin[i].ToString();

您的第一个 for 循环有两种方式:
它要么什么都不做(就像现在一样),因为 i 将从 0 开始,就像 coin.Count.
另一种选择是无限循环。为此,您必须从 1: for (i = 1... 开始计数。对你也没有好处。
我还假设您希望 GroupBox 的文本看起来像这样:

/1/2/3/4/5...

您将无法用您的代码完成。您将列表本身转换为字符串。
要获得上述格式,我建议使用 StringBuilder 对象:

StringBuilder builder = new StringBuilder();
for (int i = 0; i < coin.Count(); i++)
{
    builder.Append("/");
    builder.Append(coin[i].ToString());
}
groupBox1.Text = builder.ToString();

我的理解是你想在列表中添加一枚硬币,其价值比列表中的项目数多一。如果是这样,您需要以下内容:

List<int> coin = new List<int>();

private void groupBox1_Enter(object sender, EventArgs e)
{
  coin.Add(coin.Count + 1);
}

然后,输出硬币的价值...

private void groupBox1_Enter(object sender, EventArgs e)
{
    for (int i = 0; i < coin.Count(); i++)
    {
        string spacesOutput = coin[i].ToString();
        groupBox1.Text += "/" + spacesOutput;
    }
}