C# Windows Forms Variable

Hallo!
Wenn ich in Visual Srudio C# eine Variable im Hauprprogramm erstelle und will wenn ich ein Button drücke das die Variable einen anderen Wert animmt zeigt der Compiler mir im Button event an:

Der Name „i“ ist im aktuellen Kontex nicht vorhanden!

Wie kann ich den Fehler beheben?

Oder wenn ich t.b ein EMail Programm schreiben will:

Ich hab das Hauptprogramm Fertig nur ist das Problem das wenn ich ein Button drücke das dann die EMail verschickt werden soll.Aber wenn ich den Befehl(in diessem Fall:smile:: „mail.Send(msg)“;

zeigt der Compiler wieder an:

Der Name mmmmmhh ist im aktuellen KOntex nicht vorhanden!

Ich hoffe die Frage ist nicht zu kompliziert gestellt.

Hallo,

Du musst auf den gültigkeitsbereich der variablen achten.

Zuerst einmal ist i ein schlechter name für eine variable, die global gültig sein soll.

Fang da an, wo die formular klasse anfängt:
Public partial class form1 : Form
{
public int buttonCounter = 0;

}

Und im eventhandler kannst du dann auf die variable zugreifen:

form1.buttonCounter++; // zählt die variable hoch.

Ich empfehle dir die lektüre eines tutorials, in dem die gültigkeitsbereiche (scopes) näher erläutert werden.

Lg, alexander

Kannst du den betreffenden Code bitte mal posten und die entsprechende Zeile markieren wo der Fehler auftritt? So kann ich mit der Aussage leider nicht viel anfangen. Nur das es sich um einem Fehler handelt, bei dem deine Variable im falschen Scope ist.

Hallo.

Mit C# kann ich leider nicht dienen - sorry.

Gruß
Philip

Ich hoffe die Frage ist nicht zu kompliziert gestellt.

Hast Du die Variable auch deklariert? Das heißt bevor Du die Variable das este mal verwendest muß sie deklariert werden sonst bekommst Du erwähnte Meldung.

z.B:

using System;
.
.
.

Namensspace yxz
class Beispiel
{
int i = 2;
.
.
.
Buttonclick
{
i = 5;
}
label.Text = i.ToString(); //sollte jetzt 2 und nach Drücken 5 anzeigen

Das war nur ein Beispiel für Buttonclick mußt Du natürlich das event Ereignis des Buttons nehmen und beides muß in der gleichen Klasse stehen oder wenn unterschiedliche Klassen als public static und dann über klassenname.Variable aufrufen. Ich hoffe Du kannst mit meinen Ausführungen etwas anfangen. Wenn nicht einfach weiter fragen und etwas Code beifügen, das man sieht wo was Fehlt!

Gruß Thomas

Hallo Michael
habe mir heute mal die Mühe gemacht und eine kleine Anwendung für deine Frage Programmiert (ca 5 Minuten). Gestern war es leider schon zu spät.
Hier der Code:
using System;
using System.Windows.Forms;

namespace Variable
{
public partial class Form1 : Form
{
int i = 2;

public Form1()
{
InitializeComponent();
label1.Text = i.ToString();
}

private void button1_Click(object sender, EventArgs e)
{
i++;
label1.Text = i.ToString();
}
}
}

Die Variable i hat als Startwert 2 und wird mit jeden Tastendruck um 1 erhöht.
Ich hoffe das damit dein Problem gelöst ist! Bitte melde mal ob es geholfen hat.

Gruß Thomas