Forum: PC-Programmierung C# und Visual Studio - Namen ändern in Eigenschaften


von DeathCon (Gast)


Lesenswert?

Hallo!
Ich habe ein Problem mit Visual Studio 2008.
Wenn ich einen Button über die Toolbox erstelle und dann darauf doppelt 
klicke, erstellt mir VS eine Methode, in die ich dann auch meinen Code 
einfügen kann.
Dieser funktioniert soweit auch.
Wenn ich jetzt aber in der Form den Button anklicke und dann im 
Eigenschaftenfenster den Buttonnamen ändere (z.B. von button1 auf 
button2), dann funktioniert mein Code nicht mehr.
Klar dass ich dann meinen Code auf button2 ändern muss.
Aber es geht nicht mehr.
Und wenn ich dann wieder alles auf button1 ändere glaubt man ja das 
wieder alles funktioniert, aber nö.

Ich habe dann nochmal ein Doppelklick auf den button gemacht und mir 
wurde dann die Methode "button1_Click_1" erstellt(logisch, da 
button1_Click ja schon existiert).
Wenn ich den Code dann da einfüge geht es.

Also kann ich vom Prinzip her das Problem umgehen, aber ich möchte gerne 
wissen woran es liegt.
Denn wenn man mal ausversehen einen Namen ändert, müsste man im gesamten 
Programm die Methoden neu erstellen.

Vielleicht weis ja von euch einer, wo der Fehler liegt.

MfG
DeathCon

von Frederik K. (n0ll4k)


Lesenswert?

Das Problem ist das der EventHandler auch auf den alten Namen reagiert 
der nicht geändert worden ist. Wenn du erneut draufklickst wird ein 
neuer Eventhandler für den Button mit dem richtigen Namen hinzugefügt.

Musst mal in Form1.Designer.cs schauen unter dem Button Namen dann beim 
Click event den Namen ebenfalls ändern.

von DeathCon (Gast)


Lesenswert?

In Form1.Designer.cs steht nur die eine Zeile zu dem Button:
1
private System.Windows.Forms.Button button1;

Das was ich ja komisch finde ist, wenn ich den Namen in den Urzusatnd 
bringe, klappt es trotzdem nicht mehr.
1
private void button1_Click(object sender, EventArgs e)
2
        {
3
            timer1.Enabled = !timer1.Enabled;
4
            if (timer1.Enabled == false)
5
                button1.Text = "Timer starten";
6
            else
7
                button1.Text = "Timer stoppen";
8
       }

Hier hatte ich auch alles geändert von button1 auf button2 und wieder 
zurück.

Ist das ein bekanntes Problem oder liegt das bei mir oder meinen 
Einstellungen.

Also bei Google hatte ich dazu nichts gefunden.

von DeathCon (Gast)


Lesenswert?

Hab gerade gesehn, dass die wichtigen Elemente, die du wahrscheinlich 
meintest, zugeklappt waren. Ich guck da mal eben ob ich was finde.

von Karl H. (kbuchegg)


Lesenswert?

DeathCon schrieb:
> In Form1.Designer.cs steht nur die eine Zeile zu dem Button:
>
>
1
private System.Windows.Forms.Button button1;
>

Es muss noch eine geben.
Irgendwo wird der Event dem Button zugeordnet. Also sieh dir den Rest 
durch. Es schadet nichts wenn du dich ein wenig damit beschäftigst, wie 
das aufgebaut ist.

> Das was ich ja komisch finde ist, wenn ich den Namen in den Urzusatnd
> bringe, klappt es trotzdem nicht mehr.

Du hast wahrscheinlich schon irgendwo ein Namenschaos angerichtet.

> Ist das ein bekanntes Problem oder liegt das bei mir oder meinen
> Einstellungen.

Es liegt daran, dass du dich zu sehr auf irgendwelche Wizzards und 
Automatiken verlässt.

Zeichne eine Form.
Füge die benötigten Controls hinzu
Dann: benenne alle Controls sinnvoll und richtig

Und erst dann fängst du an, Handler an die einzelnen Events anzuhängen.

Halte dich an diese Reihenfolge, insbesondere das man die Dinge gleich 
richtig und sinnvoll benennt, oder lebe damit das nachträgliche 
Umänderungen händisches Eingreifen sowohl in deiner Form-Datei als auch 
in der vom Designer generierten cs Datei bedürfen.

> Denn wenn man mal ausversehen einen Namen ändert

Den ändert man aber nicht aus Versehen. Ausser man ist Spastiker (soll 
nicht abwertend gegenüber Spastikern sein). Von einem Programmierer wird 
erwartet, dass er bei dem was er tut ein wenig mitdenkt.

von Sven (Gast)


Lesenswert?

Selbst wenn du den Namen von deinem Button änderst, verweist der 
trotzdem noch auf die alte Eventhandler Funktion. Genau genommen musst 
du also den Namen des Handlers gar nicht ändern.

Wenn du allerdings einen Handler mit anderem Namen haben willst, gibts 2 
möglichkeiten:
1. Du änderst den Namen der Handler Funktion manuell und gibts im 
Eigenschaftenfenster des Buttons bei den Events (der kleine gelbe Blitz) 
die geänderte Funktion bei "Click" an.
2. Du benennst die Funktion (aber nicht so, wie sie heißen soll ;-) ) um 
und klickst erneut doppelt auf den umbenannten Button. Dann wird ein 
neuer Eventhandler erzeugt mit dem neuen Namen des Buttons. Jetzt musst 
du natürlich noch den Quellcode von der alten umbenannten Funktion in 
die neue kopieren.

von DeathCon (Gast)


Lesenswert?

Ja, das mit dem gleich richtig beschreiben, ist mir eigentlich schon 
klar.
Normalerweise gehe ich auch so vor, aber durch zufall ist mir das 
aufgefallen.

Ich habe es jetzt aber herausgefunden, vielleicht hilft dieser Beitrag 
dann noch jemandem mit dem gleichen Problem.
Denn wenn es schon Automatiken gibt, würde ich sie auch schon gerne 
Nutzen. Aber das mit den Namen mache ich nicht mehr über die Automatik.

Denn wie du schon sagtest, liegt der Fehler in der Form1.Designer.cs
Dort stand bei mir:
1
Vom Windows Form-Designer generierter Code

Da hätte ich nur links aufs Plus gehen müssen.

Bei meinem Timer war das selbe Problem, da stand nur:
1
this.timer1.Interval = 1000;

und es hätte noch
1
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);

stehen müssen.

Ich danke dir für deine schnelle Hilfe. Das hat mich echt nach vorn 
gebracht.

MfG
DeathCon

von DeathCon (Gast)


Lesenswert?

Auch dir danke Sven, das ist auch ein sehr hilfreicher Hinweis.

von Karl H. (kbuchegg)


Lesenswert?

Sven schrieb:
> Selbst wenn du den Namen von deinem Button änderst, verweist der
> trotzdem noch auf die alte Eventhandler Funktion. Genau genommen musst
> du also den Namen des Handlers gar nicht ändern.
>
> Wenn du allerdings einen Handler mit anderem Namen haben willst, gibts 2
> möglichkeiten:
> 1. Du änderst den Namen der Handler Funktion manuell und gibts im
> Eigenschaftenfenster des Buttons bei den Events (der kleine gelbe Blitz)
> die geänderte Funktion bei "Click" an.
> 2. Du benennst die Funktion (aber nicht so, wie sie heißen soll ;-) ) um
> und klickst erneut doppelt auf den umbenannten Button. Dann wird ein
> neuer Eventhandler erzeugt mit dem neuen Namen des Buttons. Jetzt musst
> du natürlich noch den Quellcode von der alten umbenannten Funktion in
> die neue kopieren.

Und dann gibts noch den kreativen Einsatz des Copy/Paste Buffers.

Alten Code aus der alten Funktion in den Copy Buffer holen.
Dann die Funktion komplett rauslöschen.

Neue Funktion (mit dem neuen Namen) anlegen lassen

Code aus dem Copy Buffer in die Funktion einfügen.

(OK. Ist im wesentlichen die Methode 2 von oben. Lediglich die 
'Einschränkung' mit der Namensvergabe fällt weg, da sich diese Frage gar 
nicht mehr stellt.)

von Sven (Gast)


Lesenswert?

ditsch

Jo ;-) Da macht man das seit Jaaaahren so und dann fällt einem auf, dass 
es irgendwie einfacher geht...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.