2017-10-23 5 views
-2

Ich habe ein Array von Labels erstellt, die mit einem Klick auf Schaltflächen sichtbar sind, aber da ich viele Buttons habe, möchte ich eine Schaltfläche zuweisen, damit nur ein Label sichtbar wird. Ich bin Dies ist der Code, den ich verwendet hat Probleme mit einer Taste, die mehr als ein Etikett sichtbarMaking Button wird zugewiesen, damit nur ein zufälliges Label sichtbar ist

machen:

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

Können Sie uns bitte sagen, ist es in WINFORMS, WPF oder ASP.NET? – Ramankingdom

+0

Mit welchem ​​Teil hast du Probleme? –

+0

Wenn Sie Ihre vorherige Frage ansehen, die ebenfalls abgelehnt wird, sehen Sie sich bitte [Wie Sie fragen] (https://stackoverflow.com/help/how-to-ask) und [Wie erstelle ich eine Minimal, Complete und Überprüfbares Beispiel] (https://stackoverflow.com/help/mcve) – mmushtaq

Antwort

0

in WinForms Sie einfach ein privaten Random Variable deklarieren können, und dann in dem Click Fall, dass ein Mit den Schaltflächen können Sie eine Zufallszahl auswählen, die innerhalb des gültigen Indexbereichs liegt der Etikett-Array, etwas wie:

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

Danke, aber der Code bringt eine Null-Referenz Ausnahme Fehler, keine Hilfe –

+0

Ja, aber es zeigt immer noch die Fehlermeldung, wenn ich klicke der Knopf –

+0

Hast du den Kommentar gesehen, '\\ Vermutlich ist dieses Array irgendwo gefüllt? Sie haben angegeben, dass Sie ein Array von Labels erstellt haben. Ersetzen Sie daher "labels" durch den Namen des von Ihnen angegebenen Arrays. –

Verwandte Themen