2011-08-18 21 views
1

我一直在尋找一個解決方案,但還沒有遇到過,但我不太擅長用c#隨機化。隨機控制能見度(asp.net)

我有三個asp.net控件,我希望在任何時候都可以看到其中一個控件。

該控制可以是這樣的

面板1

面板2

面板3

所以我想所有這些控制將被設置爲可見=默認爲'false'。然後randomize方法會選擇其中一個控件,並使其可見='true'。

我認爲這裏最難的部分是將控件放入數組中以隨機化?再次,我不知道如何做到這一點,所以任何幫助將是偉大的。

預先感謝您。

回答

1
Random rnd = new Random(); 
var visiblePanel = rnd.Next(1, 4); 
switch (visiblePanel) { 
    case 1: 
     Panel1.Visible = true; 
     Panel2.Visible = false; 
     Panel3.Visible = false; 
     break; 
    case 2: 
     Panel1.Visible = false; 
     Panel2.Visible = true; 
     Panel3.Visible = false; 
     break; 
    case 3: 
     Panel1.Visible = false; 
     Panel2.Visible = false; 
     Panel3.Visible = true; 
     break; 
} 
+0

這段代碼就是我要找的。我只是在尋找快速解決方案,但我還需要了解更多關於隨機化的知識,因爲它是我編碼知識中的一個薄弱環節。謝謝你的代碼和你的幫助蒂姆。 – tmutton

2

如何:

Panel[] array1 = new Panel[3]; 
array1[0] = panel1; 
array1[1] = panel2; 
array1[2] = panel3; 

foreach(Panel p in array1) { 
    p.Visible = False; 
} 

Random rand = new Random(); 
int toshow = rand.next(0, 3); 
array1[toshow].Visible = true; 

這是從我的頭conveiced沒有任何IDE支持,如果它工作正常。爲random類名可能是錯誤的(是不是在數學命名空間?)

+0

有一天,所有的面板是可見的) –

+0

@TimSchmelter我聽說你需要做的rand.next(0,最高+1)。我曾經嘗試過,我認爲我不能讓它達到最高的數字......我也不這麼認爲;它會去EXCEPTION:陣列指數超出範圍:D – sinni800

+0

我想說的是,你只是使面板可見和不可見。 –