0

我的程序的目标是模拟两个骰子的滚动,在三列列表视图中显示生成的随机数及其总和。

我无法将ListViewItemRoller 类中生成的内容返回到 Form1,因此我可以将其添加到列表视图中。

我尝试将滚轮类中的ListViewItem直接添加到列表视图中,但我无法弄清楚如何从我的滚轮类中访问列表视图。

这是我 form1 中调用我的滚轮类的代码。

private void btnRoll_Click(object sender, EventArgs e)
{
    Roller roller1 = new Roller();
    lvRollResults.Items.Add(Roller.ListViewItem(item));
}

这是我的 Roller 类的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public class Roller
    {
        ListViewItem item;

        private void randomizer()
        {

            int counter = 100; 
            int temp1;
            int temp2;
            int sum;

            Random rand = new Random();

            for (int i = 0; i < counter; ++i)
            {

            temp1 = rand.Next(1, 7);//set temp1 to a random number betwen 1&6

            temp2 = rand.Next(1, 7);//set temp2 to a random number between 1&6

            sum = temp1 + temp2;//set sum equal to temp1+temp2

            String one = Convert.ToString(temp1);
            String two = Convert.ToString(temp2);
            String three = Convert.ToString(sum);



            item = new ListViewItem(new string[] { one, two, three });

            }

        }

    }

}

我已经阅读了我的教科书,搜索了互联网,但我一生都无法弄清楚这一点。我有一种预感,这与我的方法构造函数有关,但是每次我尝试更改它时,都会遇到更多错误。

=========================================更新========== =================================

我无法得到任何可行的建议。为了解决我的问题,我只是将我 Roller 类中的所有代码放在 Form1 的 Roll_Click 函数下。

我感谢提供的所有帮助。

4

4 回答 4

1

让你list static进入,form1这样你也可以从课堂外访问它。现在对于您的问题,您要做的就是:

1.制作你的lvRollResults静态代码:

static ListView lvRollResults

2.现在在Roller类中您可以直接将值放入 lvRollResults. 类代码Roller

Form1.lvRollResults.Items.Add(item); //put this code after the 'for loop' in randomizer' method

3.您的btnRoll_Click方法的代码:

Roller roller1 = new Roller();  
roller1.randomizer();

编辑:

要使您的列表框静态,请执行以下操作:在您的form1中,通过编码创建列表框,例如static ListBox lvRollResults 在 的构造函数中设置其尺寸form1

于 2013-05-05T03:54:50.230 回答
1

根据您显示的代码执行此操作的一种方法是:-

您的 listviewitem 需要公开

  public ListViewItem item;

然后你可以使用它

  Roller roller1 = new Roller();
   lvRollResults.Items.Add(roller1.item);

前提是您在类构造函数中调用randomizer()方法。Roller

public Roller()
{
   randomizer();
}
于 2013-05-05T03:56:48.973 回答
0

另一种方法是使您的 Randomizer 方法public而不是private而不是将void其返回为ListviewItem.

  public ListviewItem Randomizer()

然后您Randomizer将返回ListViewItem.

  return item;

所以,在你的按钮点击它会是这样的。

  private void btnRoll_Click(object sender, EventArgs e)
  {
    Roller roller1 = new Roller();
    lvRollResults.Items.Add(roller1.Randomizer());
   }
于 2013-05-05T05:14:38.587 回答
0

Roller在调用 Randomizer时创建一个构造函数...或者,更改void randomize()Roller()

而在 中Form1,使用roller1.item而不是Roller.item

于 2013-05-05T03:57:31.457 回答