2011-08-18 57 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

我想说的是,你只是使面板可见和不可见。 –