Ich bin absoluter Newbee!
Mein Ziel: Dynamisch erzeugte labels auszublenden
meine Frage: Dank der gut beschriebenen Texte habe ich einen Button erstellt und darin mehrere Labels dynamisch erzeugt! Das klappt prima!!!
Auch das ansprechen einzelner Labels klappt!
Was nicht klappt:
wenn ich von einem zweiten Button z.B. einen Text im dynamisch erzeugten lbl verändern möchte ( label[5].Text = "🙂"😉, kommt die Meldung "der Name label ist im aktuellen Kontext nicht vorhanden".
Alle statisch erzeugte labels kann ich doch auch mit allen Buttons "bearbeiten".
Was muss ich tun?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace dynamischeLabels
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnerstellen_Click(object sender, EventArgs e)
{
LblErstellen();
}
public void LblErstellen()
{
int labelanzahl = 10;
Label[] label = new Label[labelanzahl];
for (int i = 1; i < labelanzahl; i++)
{
label[i] = new Label();
label[i].Text = Convert.ToString(i);
label[i].Name = "label" + i;
label[i].Left = 200;
label[i].Top = i * 40;
label[i].Width = 30;
label[i].Height = 30;
label[i].BorderStyle = BorderStyle.FixedSingle;
label[i].TextAlign = ContentAlignment.MiddleCenter;
this.Controls.Add(label[i]);
}
label[5].Text = ":x";
}
private void btnlöschen_Click(object sender, EventArgs e)
{
int labelanzahl = 10; //Alternativ panel.Controls.Count;
label[5].Text = ":)";
}
}
}
Hi,
das label-Array ist in dem Event btnlöschen_Click nicht vorhanden.
Erstelle doch sinnvollerweise eine Collection global als Property anstatt diese nur in einer Methode zu erzeugen.
Dann sollte auch der Zugriff klappen.
Array in diesem Zusammenhang zu nutzen ist denkbar ungünstig.
.....an unhandled exception is the first way to think about your pattern of programming....
.....nur weil ich nicht weiß was dort passiert, bedeutet es nicht, dass ich nicht weiß, wie man es lösen kann - aber das ist wahrscheinlich....
Gerade als Einsteiger:in ist es ratsam, die Tutorials durchzumachen, die Microsoft auf der Learning Plattform für - eben Einsteiger:innen - bereitstellt.
Verwenden von Codeblöcken in C# zum Festlegen des Gültigkeitsbereichs von Variablen und zum Definieren von Logik - Training
PS: bitte in Zukunft
[Hinweis] Wie poste ich richtig?
beachten.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Platoon,
vielen Dank für Deine super schnelle und super Reaktion!
Ich hätte schwören können, dass ich das versucht habe - aber dem war es offensichtlich nicht so!
Vielen Dank!