Laden...

Variable ist im Kontext nicht vorhanden

Erstellt von Usr vor einem Jahr Letzter Beitrag vor einem Jahr 625 Views
U
Usr Themenstarter:in
2 Beiträge seit 2022
vor einem Jahr
Variable ist im Kontext nicht vorhanden

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 = ":)";
            
        }
    }
}


P
57 Beiträge seit 2017
vor einem Jahr

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....

16.840 Beiträge seit 2008
vor einem Jahr

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.

U
Usr Themenstarter:in
2 Beiträge seit 2022
vor einem Jahr

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!