C-Sharp Variable Zuordnung
Hallo liebe Communitiy
Ich habe folgende Fragen:
Ich habe eine Windows Form mit 168 Buttons, die alle nach Zeile und Spalte benannt werden sollen (12 Zeilen und 14 Spalten)
Daraus ergibt sich die erste Frage: Kann man den Buttons schnell einen Namen zuweisen oder muss ich jedem einzelnen Button seinen eigenen Namen geben?
Klickt man nun auf einen dieser Buttons, so wird er gelb (vorher grün).
Gibt es eine Methode, die nun auf Knopfdruck die angewählten, also gelben, Buttons rot färbt?
Und gibt es eine Lösung wie man das Gelbfärben automatisiert ohne für jeden Button einzeln den Code einzufügen?
Vielen Dank im Vorraus!
Mit freundlichen Grüßen
Judo99
Ich habe folgende Fragen:
Ich habe eine Windows Form mit 168 Buttons, die alle nach Zeile und Spalte benannt werden sollen (12 Zeilen und 14 Spalten)
Daraus ergibt sich die erste Frage: Kann man den Buttons schnell einen Namen zuweisen oder muss ich jedem einzelnen Button seinen eigenen Namen geben?
Klickt man nun auf einen dieser Buttons, so wird er gelb (vorher grün).
Gibt es eine Methode, die nun auf Knopfdruck die angewählten, also gelben, Buttons rot färbt?
Und gibt es eine Lösung wie man das Gelbfärben automatisiert ohne für jeden Button einzeln den Code einzufügen?
Vielen Dank im Vorraus!
Mit freundlichen Grüßen
Judo99
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 324652
Url: https://administrator.de/contentid/324652
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo,
also so als Anregung.
Ich würde die Buttons dynamisch erzeugen und nicht alle einzeln per GUI Platzieren. Somit kannst du die Namen auch automatisch zuweisen.
Zwei schleifen verschachtelt für Zeilen und Spalten.
Dann kannst du bei allen den gleichen Event Handler hinterlegen. Mit diesem kannst du dann den "Sender" auslesen und die entsprechende Aktion vorbereiten.
Und das rot Färben kannst du über eine schleifen erledigen du über alle Buttons geht, dann überprüfen ob Farbe gelb und die ändern in rot.
Edit: hab mal kurz was getestet
Den Eventhandler muss eigentlich nur das ausführen. Dann wird der "Sender" sprich dein gedrückter Button gelb.
also so als Anregung.
Ich würde die Buttons dynamisch erzeugen und nicht alle einzeln per GUI Platzieren. Somit kannst du die Namen auch automatisch zuweisen.
Zwei schleifen verschachtelt für Zeilen und Spalten.
Dann kannst du bei allen den gleichen Event Handler hinterlegen. Mit diesem kannst du dann den "Sender" auslesen und die entsprechende Aktion vorbereiten.
Und das rot Färben kannst du über eine schleifen erledigen du über alle Buttons geht, dann überprüfen ob Farbe gelb und die ändern in rot.
Edit: hab mal kurz was getestet
Den Eventhandler muss eigentlich nur das ausführen. Dann wird der "Sender" sprich dein gedrückter Button gelb.
Button b = (Button)sender;
b.BackColor = Color.Yellow;
Wie @wiesi200 schon schreibt, alle Buttons nicht per GUI erstellen sonder programmatisch und den Eventhandler für alle Buttons gleich setzen.
Hier ein Beispiel:
Gruß mik
Hier ein Beispiel:
using System;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
const int numRows = 3;
const int numCols = 3;
for (int r = 0; r < numRows; r++) {
for(int c = 0 ;c < numCols;c++){
Button b = new Button();
b.Location = new Point(c * 130, (r * 30));
b.Size = new Size(120, 25);
b.Text = String.Format("Button R{0} C{1}",r,c);
b.Name = String.Format("Button_R{0}C{1}", r, c);
b.BackColor = Color.LightGreen;
b.Click += new EventHandler(b_Click);
this.Controls.Add(b);
}
}
}
// Handler der die Klicks auf alle Buttons regelt
void b_Click(object sender, EventArgs e) {
Button b = (Button)sender;
b.BackColor = Color.Yellow;
//MessageBox.Show("I am Button with Instancename: " + b.Name);
}
// Prozedur die alle gelb gefärbten Buttons auf Rot setzt
private void btnResetYellow_Click(object sender, EventArgs e) {
var yellowButtons = from Control b in this.Controls where b.BackColor == Color.Yellow select b;
foreach (Control b in yellowButtons) {
b.BackColor = Color.Red;
}
}
}
}