Laden...

WinForms: Click-Events werden nicht aufgerufen

Erstellt von GoldenBoy vor 8 Jahren Letzter Beitrag vor 8 Jahren 4.539 Views
GoldenBoy Themenstarter:in
19 Beiträge seit 2015
vor 8 Jahren
WinForms: Click-Events werden nicht aufgerufen

Hi Community,

ich bin grad dabei mit dem besagten Buch zu lernen und hab es wirklich geschaft mit dem ersten Kapital besagtes Programm nicht zum laufen zu bringen. Also zum laufen schon nur es macht nicht das was der Autor vorgibt, obwohl der Code 1zu1 stimmt. Selbst auf der C# Windows Homepage hab ich in der Library nachgelesen und den Code verglichen, leider aber ohne Erfolg, vielleicht könnt ihr mir ja weiterhelfen.

Laut Autor soll jetzt mit einem Klick auf den Button Hallo oben (leer) ==> Hallo verändern und mit Click auf Button Ende, soll sich das Fenster schließen. Beides funktioniert nicht... das ist ja schon beschähmend das Ganze X(


using System;
using System.Drawing;
using System.Windows.Forms;
namespace MeinErstes
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void cmdHallo_Click(object sender, EventArgs e)
        {
            lblAnzeige.Text = "Hallo";
        }
        private void cmdEnde_Click(object sender, EventArgs e)
        {
            Close();
        }

    }
}

Hinweis von Coffeebean vor 8 Jahren

Ich habe mal den Titel editiert. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 3. Wenn du einen besseren Vorschlag hast, dann editier ihn nochmal. Kein Suchender wird wissen, was mit dem Titel "Einstieg in Visual C#2013 - Anfangsproblem" gemeint ist, wenn er den Thread in der Suche findet. Dein Problem hat mit Click-Events und Winforms zu tun. Das sollte im Titel auch klar werden.

Ich habe zwar keinen Computer, aber was soll's.
Ich hab mir zum üben, eine Tastatur aus Papier gemacht.

C
2.121 Beiträge seit 2010
vor 8 Jahren

Hast du auch den Buttons diese Methoden als Eventhandler zugewiesen? Sonst ruft der Button sie nicht auf wenn man ihn klickt.

3.003 Beiträge seit 2006
vor 8 Jahren

Die beiden Methoden sind Ereignisbehandlungen, also Methoden, die aufgerufen werden, wenn ein Ereignis eintritt.

Dass deine Form ausgerechnet DIESE beiden Methoden aufrufen soll, wenn die Ereignisse eintreten, musst du ihm sagen. Also einmal den Button auswählen im Designer, F4 (Eigenschaften), das Icon mit dem Blitz auswählen und in das Click-Ereignis "cmdHallo_Click" eintragen, und dasselbe mit dem anderen Button (dort halt nur cmdEnde_Click eintragen beim Click-Ereignis).

Nur abtippen reicht nicht 😉.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

GoldenBoy Themenstarter:in
19 Beiträge seit 2015
vor 8 Jahren

das man hier schon um solch einer Uhrzeit Feedback bekommt ist ja 👍 👍

Also ich hatte jetzt noch zwischenzeitlich einen ziemlichen komischen Fehler im Designfenster, da war plötzlich eine Homepage von Microsoft... keine Ahnung, irgendwie schwerer Ausnahmefehler. 8o

Programm geschlossen, Neugestartet, Neues Projekt geöffnet, nochmal Alles geschrieben und es funktioniert. Ich glaub es lag daran das ich auf die Button geklickt habe und danach direkt den Code eingegeben habe, denn den Blitz-Button hatte ich vorher noch nicht gekannt. Aber als ich dann Alles via Blitz 🙂 geprüft habe, stand überall schon die Funktion Click ausgefüllt. 🤔

Danke Euch.

Ich habe zwar keinen Computer, aber was soll's.
Ich hab mir zum üben, eine Tastatur aus Papier gemacht.

3.003 Beiträge seit 2006
vor 8 Jahren

Als ich mit Forms angefangen habe, war das Durchgehen des Designer-Codes ein Aha-Erlebnis.
Dort kann man sehr schön sehen, wie das Zeug, das man im Designer in irgendwelche Fenster einträgt, dann umgesetzt wird - und entsprechend auch lernen, wie man das selber macht, ohne den Designer zu benutzen. (Letzten Endes ist das alles nur Code, man muss nur rausfinden, wo Visual Studio den versteckt.)

Findest du normalerweise als Klassenname.designer.cs. Schau's dir ruhig mal an.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

GoldenBoy Themenstarter:in
19 Beiträge seit 2015
vor 8 Jahren

Danke für den Hinweis.

Bezüglich der Fehlermeldung, ich habs geschafft sie wieder zu bekommen. 8) 😁

Ist es normal wenn man z.B. Buttons bereits einen Namen gegeben hat dieser auch im Code bereits Verwendung findet und man dann im Code diesen ändert und man dann zurück ins Designfenster wechselt um besagten Name auch zu ändern und dann so eine Fehlermeldung produziert?

Das Problem dabei, das komplette Design ist weg, nichts mit ignore und weiter gehts, leeres Designfenster. X(

Ich habe zwar keinen Computer, aber was soll's.
Ich hab mir zum üben, eine Tastatur aus Papier gemacht.

344 Beiträge seit 2006
vor 8 Jahren

Hallo,

wo hast du was geändert. Verstehe kein Wort.

Wenn du in Forms1.Desinger.cs was änderst, dann ja.
In der Form1.cs eigentlich nicht.

Gruss Lothi

GoldenBoy Themenstarter:in
19 Beiträge seit 2015
vor 8 Jahren

Hi Lothi

hier ein Beispiel wie ich den Fehler erzeuge.

unter Properties / Design-Name z.B. der Button als "cmd_PositionRel" benannt.

im Codefenster


private void cmd_PositionRel_Click(object sender, EventArgs e)

hier ändere ich Name in z.B.


private void cmd_Position_Rel_Click(object sender, EventArgs e)

= ERROR = Design komplett gelöscht

Ich habe zwar keinen Computer, aber was soll's.
Ich hab mir zum üben, eine Tastatur aus Papier gemacht.

J
251 Beiträge seit 2012
vor 8 Jahren

Wurde denn im CodeBehind des Designer dies mit umbenannt bzw. daran gedacht den Vorschlag alle Verweise umzubenennen angenommen?

GoldenBoy Themenstarter:in
19 Beiträge seit 2015
vor 8 Jahren

Ja es funktioniert soweit ja Alles. Meine Frage ist jetzt nur ob das normal ist, das für den Fall der Fälle, 😭 sollte ich den Fehler mal wieder schaffen, das ich dann im Designfenster Alles komplett neue designen müsste.

Ich habe zwar keinen Computer, aber was soll's.
Ich hab mir zum üben, eine Tastatur aus Papier gemacht.

F
10.010 Beiträge seit 2004
vor 8 Jahren

Nur weil da eine Fehlermeldung kommt musst du nix neu designen.

Designerfenster schliessen, Fehler beheben und gut.

GoldenBoy Themenstarter:in
19 Beiträge seit 2015
vor 8 Jahren

Leider schon, ich click auf ignore und weiter, weil ich ja wieder Zugriff auf die Optionen brauch für den Button als Bsp. und dann finde ich ein leeres Fenster vor.

Ich habe zwar keinen Computer, aber was soll's.
Ich hab mir zum üben, eine Tastatur aus Papier gemacht.

1.040 Beiträge seit 2007
vor 8 Jahren

Wenn ich mich recht erinnere, schmeißt er alles was fehlerhaft ist (designtechnisch) bei Klick auf "Ignore" raus.
Also erst die Fehler beheben und dann wieder den Designer öffnen.

J
251 Beiträge seit 2012
vor 8 Jahren

Dann wurde der Hinweis in Richtung CodeBehind des Designer unterschlagen.

Nehme man als Formular "Form1.cs" so gibt es in der Projektmappe ein "Form1.Designer.cs".
Dort sollte der Fehler sein, der dich dran hindert optisch was zu sehen.

Ein weiterer Hinweis am Rande.
In der Regel lässt man den Designer auto.-generierten Code in Ruhe.
Wenn man z.B. ein Event umbenennt, so würde dir deine Entwicklungsumgebung (VS) anbieten, dass jeder Verweis mit umbenannt wird.
Die Konsequenz, wenn man dieses Angebot nicht annimmt, kennst du wohl derzeitig zu genügend.

GoldenBoy Themenstarter:in
19 Beiträge seit 2015
vor 8 Jahren

Ah ok, dann wird ich das mal probieren. Mit Event meinst Du was genau? Also bis jetzt kam kein Angebot Seitens des Compilers. Hät ich aber gerne angenommen. Der Fehler entsteht sogar wenn ich im Designer einen Button setze und ausversehen zu schnell geklickt habe und bereits im Codefenster gelandet bin mit entsprechenden Autoeintrag inkl. Platzhalterbeschriftungen und diesen komplett wieder lösche, kann ich schon nicht mehr zum Designerfenster switchen da mich der Fehler schon erwartet. Also gleich zu Form1.Designer.cs changen und dort umbennennen oder den betroffenen Button etc. rauslöschen...

übrigens mal am Rande, ich hab hier grad noch eine kleine Verständnisfrage, muss man hier im Forum ein neuen Thread eröffnen oder darf ich das hier auch posten? :evil:

Ich habe zwar keinen Computer, aber was soll's.
Ich hab mir zum üben, eine Tastatur aus Papier gemacht.

2.207 Beiträge seit 2011
vor 8 Jahren

übrigens mal am Rande, ich hab hier grad noch eine kleine Verständnisfrage, muss man hier im Forum ein neuen Thread eröffnen oder darf ich das hier auch posten? :evil:

Das kommt auf die Frage an.

Bitte beachte dazu [Hinweis] Wie poste ich richtig? ... eigentlich komplett 😉. Aber besonders Punkte 1) und 2)

Das solltest du eigentlich gelesen haben... 🤔

344 Beiträge seit 2006
vor 8 Jahren

Ah ok, dann wird ich das mal probieren. Mit Event meinst Du was genau? Der Fehler entsteht sogar wenn ich im Designer einen Button setze und ausversehen zu schnell geklickt habe und bereits im Codefenster gelandet bin mit entsprechenden Autoeintrag inkl. Platzhalterbeschriftungen und diesen komplett wieder lösche, kann ich schon nicht mehr zum Designerfenster switchen da mich der Fehler schon erwartet. Also gleich zu Form1.Designer.cs changen und dort umbennennen oder den betroffenen Button etc. rauslöschen...

:

Das ist halt das Problem wenn man nicht weiss was eine Klasse ist und wie ein Event und Formular aufgebaut ist.

Wenn du auf den Button doppelt klickt, generiert dir Visual Studio ein Eventhandler Click. Dieser ist dafür da, dass überhaupt etwas passiert wenn du drauf klickst.
Zu diesem EventHandler gehört eine Methode. Diese Methode siehst du dann, wenn du in deiner Form1.cs Datei bist. Löscht du diese Methode von Hand, findet der Designer diese nicht mehr und kann deine schöne Form nicht mehr anzeigen.
Also bevor du die Methode löscht, zuerst den Eintrag im (wie sagst du so schön) "Blitz" löschen.

Gruss Lothi