2013-05-05 54 views
0

我的計劃的目標是模擬兩個骰子,產生的隨機數的顯示以及它們在三列列表視圖總和的滾動。檢索一個類中創建一個列表視圖項主要形式

我有麻煩,我滾筒類回到我的Form1中產生的ListViewItem這樣我就可以把它添加到我的列表視圖。

我曾嘗試將ListViewItem直接添加到滾軸類的列表視圖中,但我無法弄清楚如何從我的滾軸類訪問列表視圖。

這裏是我的Form1中調用我的輥類我的代碼。

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

這裏是我的滾筒類的代碼:我看過我的課本

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函數下。

我很欣賞所提供的所有幫助。

回答

1

使您的liststaticform1,以便您可以從課外訪問它。現在你的問題,你都必須做的是這樣的:

1.讓你lvRollResults靜,代碼:

static ListView lvRollResults 

2.現在在Roller類,你可以直接把值代入lvRollResults。爲Roller類代碼:

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

代碼爲您btnRoll_Click方法:

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

編輯:

爲了使您的列表框中靜做這樣的: 在你form1,創建列表框編碼如static ListBox lvRollResults 在構造函數form1中設置其尺寸。根據您所顯示的代碼來做到這一點

+0

我在哪裏輸入代碼來使我的lvRollResults靜態?我曾試圖改變私人無效lvRollResults_SelectedIndexChanged(對象發件人,EventArgs的) – 2013-05-05 19:02:27

+0

@BrianDawson檢查更新 – Shaharyar 2013-05-06 10:41:01

1

一種方法是: -

你的ListViewItem的需要是公共

public ListViewItem item; 

,那麼你可以把它用

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

提供獲得你在你的Roller類構造函數中調用randomizer()方法。

public Roller() 
{ 
    randomizer(); 
} 
0

Roller創建一個構造函數調用隨機數發生器... 或者,通過Roller()

而且在Form1改變void randomize(),使用roller1.item代替Roller.item

0

另一種方法是使你的隨機數發生器方法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()); 
    } 
+1

我嘗試這樣做,我得到lvRollResults不會在上下文中存在,在btnRoll_Click代碼中的錯誤。 – 2013-05-05 19:15:22

+0

@BrianDawson lvlRollResults來自您剛纔複製的代碼,因此您應該知道它是否真的存在。嘗試檢查您的ListView的名稱,如果它的lvRollResults並將其更改爲該名稱。或者試着檢查你是否有一個列表視圖,我懷疑你是否沒有列表視圖。例如,很可能你有一個,它只是一個錯誤名稱的問題,如不同的拼寫。 – Edper 2013-05-06 00:42:17