Laden...

Benutzersteuerelement mit Button ruft Event nicht auf ...?

Erstellt von m.hofmann vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.401 Views
Thema geschlossen
M
m.hofmann Themenstarter:in
3 Beiträge seit 2012
vor 11 Jahren
Benutzersteuerelement mit Button ruft Event nicht auf ...?

Hallo Forumsmember, ersteinmal ein Hallo von mir. Ich lese jetzt schon seit längerem in eurem Forum mit. Großese Lob und Danke für die bisherige Hilfe.

Jetzt habe ich abe auch mal eine Frage. Und zwar habe ich mir ein Benutzersteuerelement gebaut mit einem Button und einer Textbox. Der Button ruft einen Filedialog auf, in der Textbox wird der Filepath dann angezeigt.
Das Steuerelement will ich aus dem Programm je nach Bedingung Aktivieren (Instanzieren). Das Klappt soweit auch, nur will der Button nichts mehr tun. Wenn ich das Benutzersteuerelement versuchsweise im Formeditor auf die Form ziehe funktioniert der Button. Was fehlt den in meinem Code noch? Das Openbook gibt zwar was her, aber nicht zu "this.Controls.Add".

                     if (Bedingung)
                    {
                        WMLasercontrol Laser1 = new WindowsFormsApplication1.WMLasercontrol();
                        this.Controls.Add(Laser1);
                        Laser1.BackColor = System.Drawing.Color.Transparent;
                        Laser1.Location = new System.Drawing.Point(61, 565);
                        Laser1.Name = "Laser1";
                        Laser1.TabIndex = 26;
                    }

B
357 Beiträge seit 2010
vor 11 Jahren

Ah ein Biberacher, nice 😉

Ich kann dein Problem allerdings nicht nachvollziehen. In einem schnell zusammengeschraubten Testprogramm reagiert alles so, wie es soll. Hast du mal versucht, das Control in einem kleinen Testumfeld zu nutzen?

M
m.hofmann Themenstarter:in
3 Beiträge seit 2012
vor 11 Jahren

bredator, kommst Du auch ausm Ländle?

Ok, hab den Control mal in ein Testumfeld integriert.
Angezeigt wird optimal, aber der Button funktioniert leider nicht.
Ich denke ich habe irgend eine Kleinigkeit vergessen beim Aufruf. ??

V
66 Beiträge seit 2010
vor 11 Jahren

Ich denke, hier geht es um mangelndes Grundlagenwissen bzgl. Events.

Und daher sei ein Hinweis auf [Hinweis] Wie poste ich richtig? Punkt 1.1.1 und 1.1 angebracht.

M
m.hofmann Themenstarter:in
3 Beiträge seit 2012
vor 11 Jahren

Hallo vagtler,

ich dachte das durch den Befehl "this.Controls.Add(xxControllxx)" alle Events aus dem Steuerelement vererbt werden?
Mit eigenen Events muß ich doch nur anfangen wenn ich was komplett eigenes habe? Ich nutze aber einen Standart Button und ein Textfeld.
Solte ich ein Event selber werfen müssen macht es ja keinen Sinn mehr ein eigenes Benutzersteuerelement zu entwerfen das mehr als einen Button (Event) enthält. Oder?

Hinweis von herbivore vor 11 Jahren

Dass die Events eines Buttons vorhanden sind und - bei Vererbung, nicht bei Aggregation - vererbt und gefeuert werden, entbindet aber nicht davon, die Events abonnieren zu müssen bzw. in anderen Worten ausgedrückt, den EventHandler registrieren zu müssen.

Wenn man den Button jedoch nur als Element in eine anderen (Container-)Control packt, dann hat das Container-Control dadurch natürlich noch lange nicht die Events des Buttons, sondern man muss sie im Container-Control selbst definieren und von dem Ursprungscontrol zu den neu definieren Events weiterleiten, siehe dazu best practise: Event einer aggregierten Klasse weiterleiten. Dann klappt das auch mit mehreren Buttons.

Wie von vagtler gesagt, geht es bzw. basiert hier alles auf Grundlagen, die zudem in der FAQ ausführlich behandelt sind, siehe [FAQ] Eigenen Event definieren / Information zu Events (Ereignis/Ereignisse).

Thema geschlossen