Laden...

Control entfernen

Erstellt von msimmerl vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.166 Views
M
msimmerl Themenstarter:in
127 Beiträge seit 2006
vor 15 Jahren
Control entfernen

Hi Leute,

hab folgendes Problem:

In der Form_load Funktion füge ich der Form ein UserControl hinzu.
Funktioniert auch.

Jetzt will ich das ich beim drücken von F12 das UserControl wieder entferne.
tut sich aber leider nichts.

Hier mal der Quellcode:


private void Form1_Load(object sender, EventArgs e) {
            Startseite start = new Startseite(this);
            start.Location = new Point(0, 0);
            this.Controls.Add(start);
        }

Hier der Quellcode zum Entfernen des Controls:


private void Lieferservice_KeyDown(object sender, KeyEventArgs e) {
            if (e.KeyCode == Keys.F12) {
                Console.WriteLine("Taste F12 gedrückt");
                Controls.Remove(start);
            }
        }

Kann das sein, dass es aus diesem Grund nicht geht weil das KeyDown Event von dem Control Startseite kommt und dann nur weitergeleitet wird?

Gruß Manuel

3.430 Beiträge seit 2007
vor 15 Jahren

Hi,

verusche es mit start.Dispose()

denn das sollte klappen

mfg
michlG

Gelöschter Account
vor 15 Jahren

aus deinem quelltext schließe ich folgendes (da du uns diese informationen vorenthalten hast):

"Form1_Load" ist offensichtlich auf deinr form und erstellt eine istanz von der startseite (warum diese den owner im konstruktor bekommt wenn es eh ein control ist, ist mir schleierhaft...)

"Lieferservice_KeyDown" befindet sich ebenfalls auf der Form1?
(diese informationen sind wichtig... wir kennen deinen quellcode nciht...)

wenn ja, dann dürfte sowieso eine compilerfehlermeldung kommen, da "start" in "Controls.Remove(start);" nicht bekannt sein dürfte.

oder liegt die methode wo anders? im allgemeinen dürfte so eine variable nciht bekannt sein in dem scope..

wo liegt der fokus wenn du F12 drückst?
(auch diese information ist wichtig)

3.825 Beiträge seit 2006
vor 15 Jahren

Hallo Manuel,

Kann das sein, dass es aus diesem Grund nicht geht weil das KeyDown Event von dem Control Startseite kommt und dann nur weitergeleitet wird?

Schau Dir mal den Debugger im Visual Studio an, mit dem kannst Du sowas schnell rauskriegen.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

S
54 Beiträge seit 2007
vor 15 Jahren

Du übergibst hier die Form selbst an das Control, das würde ich nicht machen, glaub nicht das das nötig ist. vermutlich


Startseite start = new Startseite(this);

Das Hier muss wenn du es so lassen willst in deinen Form-code, ich glaub du hast das wohl in die ButtonKlasse geschrieben.
den Keyevent dann bei der form adden.


private void Lieferservice_KeyDown(object sender, KeyEventArgs e) {
            if (e.KeyCode == Keys.F12) {
                Console.WriteLine("Taste F12 gedrückt");
                Controls.Remove(start);
                 //oder falls es in deiner ButtonKlasse stehen soll
                //this.Parent.Remove(this);

            }
        }

dispose() löscht das Element, bleib lieber bei remove. Kannst es dann wieder zurückholen bei Bedarf oder vielleicht reicht auch Visible = false;

*Edit Scheiss Groß- und Kleinschreibung 👅

4.506 Beiträge seit 2004
vor 15 Jahren

Hallo msimmerl,

meine Erfahrung hat gezeigt, dass es teilweise Schwierigkeiten bei "OnKeyDown" und der F12 Taste. Probiere testweise einmal eine andere Taste.

Sollte eine andere Taste funktionieren, dann verwende das "OnKeyUp"-Ereignis, das hat bei mir normalerweise funktioniert.
Sollte es trotzdem nicht funktionieren, dann liegt es an Deinem Key-Event-Handling.

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

M
205 Beiträge seit 2008
vor 15 Jahren

So als ergänzung zum geschriebenen, wenn du einen Tasten druck auf deiner Form auswerten willst musst du auch die Formulareigenschaft KeyPreview auf true setzen da sonst dein Ereignis nicht ausgewertet wird wenn ein Steuerelement deines Formulars den Fokus hat.

mfg Markus

M
msimmerl Themenstarter:in
127 Beiträge seit 2006
vor 15 Jahren

Hab das mit start geändert diese Methode war nicht bekannt 😦

Jetzt funktionierts einwandfrei.

Vielen dank für die zahlreiche Hilfe.

Gruß
msimmerl