0

私のプログラムの目標は、2 つのサイコロの転がりをシミュレートし、生​​成された乱数とその合計を 3 列のリスト ビューに表示することです。

Roller クラスで生成されたものを Form1 に戻すのに問題があるListViewItemため、リスト ビューに追加できます。

ローラー クラスからリスト ビューに直接追加しようとしましたListViewItemが、ローラー クラスからリスト ビューにアクセスする方法がわかりません。

私のローラークラスを呼び出すフォーム1からのコードは次のとおりです。

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、値を に直接入れることができます lvRollResultsRollerクラスのコード:

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

あなたが示したコードに基づいてこれを行う1つの方法は次のとおりです。

リストビュー項目は公開する必要があります

  public ListViewItem item;

次に、使用して取得できます

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

クラスコンストラクターrandomizer()でメソッドを呼び出す場合。Roller

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

もう 1 つの方法は、public代わりにRandomizer メソッドを作成し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

RollerRandomizerの呼び出しでコンストラクターを作成します... または、変更void randomize()しますRoller()

では、代わりにForm1使用しますroller1.itemRoller.item

于 2013-05-05T03:57:31.457 に答える