Autor Beitrag
bd.cole
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 46

Win XP, Vista
C# (VS 2005)
BeitragVerfasst: Mi 22.08.07 10:10 
Hallo Man kann ja Objecte wie z.b. Picturebox zur Laufzeit ganz eifnach erstellen. Kann man die auch zur Laufzeit wieder löschen. Mit der Entf Taste? Find da nirgends was
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 22.08.07 11:51 
Du entfernst den sender-Parameter des Eventhandlers aus der Controls-Collection des Parents, fertig. Dispose kannst du auch noch gleich aufrufen.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 22.08.07 12:56 
Hallo,

ich wollte meine Antwort schon länger abschicken, hatte aber Probleme mit der Forums-Datenbank. Da ich sie ausführlicher geschrieben hatte als Khabarakh, schicke ich sie, obwohl sie im Ergebnis nicht mehr vorschlägt als er.

Zur Laufzeit "ganz einfach" erstellen? Nun ja, mit soviel Code wie erforderlich...

Zur Laufzeit löschen "mit der Entf-Taste"? So einfach natürlich nicht; dafür ist (wie beim Erstellen) entsprechend viel Code erforderlich. Insbesondere musst Du feststellen, welches Control gelöscht werden soll.

Arbeitsanleitung zum Beispiel so:
  1. Im Formular muss KeyPreview = true gesetzt werden.
  2. Du musst das Ereignis KeyDown oder KeyUp nutzen, um das Drücken der Entf-Taste zu erhalten.
  3. In diesem Ereignis dürfte der Sender das aktuelle Control angeben; es könnte aber auch sein, dass Du mit ActiveControl arbeiten willst oder die aktuelle Maus-Position umrechnen musst. Auf jeden Fall musst Du auf diese Weise herausfinden, welches Control zu löschen ist.
  4. Dann musst Du den Parent des Controls bestimmen und es aus dessen Auflistung löschen:
    ausblenden C#-Quelltext
    1:
    2:
    3:
    4:
    5:
    Control required = ... //  welches Du vorher bestimmt hast
    if (required.Parent != null) {
        required.Parent.Controls.Remove(required);
        required.Dispose();
    }

    Anstelle des Parent kann auch mit dem Formular gearbeitet werden - je nach Situation.

Viel Erfolg! Jürgen

PS. Ohne Gewähr - ich hatte es nur so hingeschrieben.