Announcement

Collapse
No announcement yet.

Forms in Tabs kommunizieren lassen?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Forms in Tabs kommunizieren lassen?

    Hallo zusammen,

    ich habe hier ein Programm, welches für den Anwender im wesentlichen aus einem Hauptformular besteht, in welchem ausser Menüs etc. alle weiteren Forms in Tabs dargestellt werden sollen. In etwa so, wie bei den gängigen Browsern oder Excel.

    Im ersten Tab befindet sich ein Grid mit etlichen Datensätzen. Durch Auswahl eines solchen Datensatzes öffnet sich ein neues Tab, welches die umfangreichen Detailinformationen enthält.
    Bisher öffnet sich hier ein neues Form. Weil es aber sehr viele offene Forms geben kann, die dann die Bildschirm zu müllen, möchte man hier lieber Tabs.

    Mein Problem nun:
    Wie schaffe ich es, dass das Tab mit dem Grid dem ihm übergeordneten Main-Form mitteilt, welches neue Form in einem neuen Tab zu öffnen ist?

    In der Deluxe-Version möchte ich dann noch Änderungen, die in einem Detail-Form gespeichert werden, möglichst zeitgleich im Grid erscheinen lassen.
    Aber das muß zunächst wirklich nicht sein.

    Das Grid ist zu breit, als dass ich die Detail-Forms im gleichen Tab daneben anzeigen könnte.

    Zur Verfügung stehen VS2008 C# und aktuelle DevExpress-Komponenten.

    Hat jemand eine Idee, wie man sowas machen könnte?

    Ciao,
    nextX

  • #2
    Hallo,

    dabei handelt es sich um das "übliche" Problem, wie zwei Klassen miteinander kommunizieren können, wobei die eine (das Form im Tab) von der anderen (dem MainForm) abhängig ist. Dabei gibt es grundsätzlich zwei Wege:

    1. Das MainForm holt sich Informationen über Eigenschaften der abhängigen Klasse. In diesem Fall muss das MainForm von sich aus aktiv werden.

    2. Im MainForm wird eine Methode definiert, die bei Bedarf etwas ausführt. Diese Methode wird als Delegate an ein Ereignis in dem Tab-Form gebunden. Sobald das Ereignis im abhängigen Formular ausgelöst wird (z.B. durch Button-Click), erfolgt eine entsprechende Maßnahme im MainForm.

    Erläuterungen dazu findest du z.B. unter Kommunikation von 2 Forms und den vielen dort genannten Verweisen.

    Gruß Jürgen

    Comment


    • #3
      Hallo,

      danke für die Tipps. Sowas in der Art nach Lösung 2 hatte ich mir schon gedacht. Ich konnte nur den Einstieg nicht finden.

      Zwischenzeitlich habe ich aber eine Lösung gefunden, die aber an den speziellen Komponenten von DevExpress hängt.

      Da gibt es mit dem xtraTabbed MdiManager eine spezielle Tab-Komponente, die einiges automatisiert und vereinfacht.

      Code:
      rfAdresse AdrForm= new rfAdresse(null);
      AdrForm.MdiParent = this.ParentForm;
      AdrForm.Show();

      Trotzdem auch danke für den Link auf die FAQ. Die hatte ich übersehen...

      Ciao,
      nextX

      Comment

      Working...
      X