MDI vraag/probleem, frmLijst en frmDetails

Status
Niet open voor verdere reacties.

digi-rj

Nieuwe gebruiker
Lid geworden
7 apr 2008
Berichten
2
Hallo,

Ik heb een MDI parent (frmMain) en heb een lijst (frmLijst).
Op frmLijst staat een datagrid met items. Als ik op een item klik dan moet frmDetails worden weergeven. Dit gaat op zich allemaal goed, maar als ik nu een tweede keer op het item dan verschijnt een nieuw frmDetails. Ik wil graag dat het frmDetails van de eerste keer naar voor komt.

Code:
//frmLijst heeft de volgende code
//Onderstaand code zorgt ervoor dat frmLijst slechts
//1x geopend wordt. Dit werk zoals het moet werken.

private static frmLijst _LeefIkAl;
public static frmLijst LeefIkAl
{
  get
  {
    if(_LeefIkAl == null)
    {
      _LeefIkAl = new frmLijst();
    }
    return _LeefIkAl
  }
}

public static void ShowLijst()
{
  LeefIkAl.Show();
}

Code:
//De onderstaande code wordt uitgevoerd als er op een item in de lijst
//wordt geklikt (event DataGridView -> cell double click

private void OpenItem()
{
   int itemID = [haal uit datagridview] //Werkt ook naar behoren
   frmDetails.ShowDetails(itemID);
}

Code:
//Deze code staat in frmDetails

public static void ShowDetails(int itemID)
{
  frmDetails det = new frmDetails();

  //Voer een query uit aan de hand van het itemID
  //en vul de velden op het formulier
  //Dit alles werkt ook

  //Nu het formulier weergeven
  det.Show();

}

Nu wil ik graag dat op de plek van
# -> frmDetails det = new frmDetails();
code komt te staan die kijkt of het 'itemID' al een keer geopend is, en zo ja deze naar voren haalt. Bestaat het itemID nog niet dan mag een nieuw formulier worden geopend.

Met behulp van een Array of List misschien? Ik kan in ieder geval niet zo heel veel informatie op het internet vinden. Misschien dat hier iemand het weet of mij toch op het internet in de goede richting kan drukken.

mvg
digi-rj
 
hoe ik het heb opgelost:


PHP:
public static void Open_ServerDetails(int server_id)
{
   bool gevonden = false;
   //frmMain.LeefIkAl bevat de instantie van frmMain die actief is... 
   //simpeler kan het niet omschrijven
   foreach (System.Windows.Forms.Form f in frmMain.LeefIkAl.MdiChildren)
   {
      //Ik heb meerdere details formulieren:
      //frmServerDetails, frmWerkstationDetails, frmSoftwareDetails, etc
      if (f.Name == "frmServerDetails")
      {
         //De regel die ik eerst niet kon vinden...
         servers.frmServerDetails x = (servers.frmServerDetails)f;
         if (x.ServerID == server_id)
         {
            x.Show();
            x.BringToFront();
            gevonden = true;
         }
      }
   }
   if (!gevonden)
   {
      servers.frmServerDetails.ServerDetails(server_id);
   }
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan