2017-10-23 4 views
-2

ボタンをクリックすると表示されるようにラベルの配列を作成しましたが、多くのボタンがあるので、ボタンを割り当てて1つのラベルのみを表示させたいと考えています ボタンを1つだけのランダムラベルを表示するように割り当てる

見える複数のラベルを作成するボタンを作るとのトラブルを抱えてこれは私が使用したコードは次のとおりです。あなたは、単にの1のClickイベントで、その後プライベートRandom変数を宣言し、できるのWinformsで

var labels = Controls.OfType<Label>().ToArray(); 
//And then randomly make on of them visible. 
var random = new Random(); 
var label = labels[random.Next(0, labels.Count - 1)]; 
label.Visible = true; 
+0

WINFORMS、WPF、またはASP.NETで教えてもらえますか? – Ramankingdom

+0

あなたはどの部分に問題がありますか? –

+0

あなたの前の質問を見ても、投票が遅れていますので、[How to Ask](https://stackoverflow.com/help/how-to-ask)と[[最小、完全、および検証可能な例](https://stackoverflow.com/help/mcve) – mmushtaq

答えて

0

あなたのボタン、あなたは有効なインデックスの範囲内にある乱数を選択することができます

private Label[] labels = new Label[10]; // Presumably this array is filled somewhere 
private Random rnd = new Random(); 

private void Form1_Load(object sender, EventArgs e) 
{ 
    for(int i = 0; i < labels.Length; i++) 
    { 
     labels[i] = new Label 
     { 
      Height = 20, 
      Left = 10, 
      Name = $"Label{i}", 
      Tag = i, 
      Text = $"Label{i}", 
      Top = 10 + 20 * i, 
      Visible = false 
     }; 

     this.Controls.Add(labels[i]); 
    } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    if (labels != null && labels.Length > 0) 
    { 
     // If needed, this will hide any currently visible labels in the array 
     foreach(var label in labels.Where(label => label != null && label.Visible)) 
     { 
      label.Visible = false; 
     } 

     // Pick a random label and make it visible 
     labels[rnd.Next(0, labels.Length)].Visible = true; 
    } 
} 
+0

ありがとうございますが、コードはNull参照例外エラー、任意のヘルプを引き出します –

+0

ええ、それでも、クリックするとエラーメッセージが表示されますボタン –

+0

コメント '\\おそらくこの配列はどこかにありますか?'あなたはラベルの配列を作成したと言ったので、 'labels'をあなたが配置した配列の名前に置き換えてください。 –

関連する問題