2009-09-30 4 views
0

J'écris une application MDI en C#. Je voudrais un moyen de stocker les positions et le contenu de toutes les fenêtres ouvertes, de sorte qu'un utilisateur peut personnaliser la façon dont plusieurs documents sont consultés. Existe-t-il un moyen simple de le faire, ou devrais-je lancer ma propre solution?Comment puis-je conserver la mise en page MDI dans .NET?

+0

Il semble qu'il n'y ait pas de façon intégrée de le faire. –

Répondre

1

J'ai vu quelques classes de persistance de forme autour mais elles n'ont pas fait exactement ce dont j'avais besoin. J'ai fini par rouler ma propre, faisant essentiellement les suivants:

Control mdiClientControl; 
foreach (Control control in Controls) 
{ 
    if (control is MdiClient) 
    { 
     mdiClientControl = control; 
     break; 
    } 
} 

foreach (Form mdiChild in MdiChildren) 
{ 
    string theName = mdiChild.Name + "_Window_Layout"; 
    DoSave(theName, "Top", mdiChildTop); 
    . 
    . 
    . 
    DoSave(theName, "WindowState", (int)mdiChild.WindowState); 
    DoSave(theName, "Visible", mdiChild.Visible); 
    DoSave(theName, "ChildIndex", theMDIClientControl.Controls.GetChildIndex(mdiChild)); 
} 

DoSave() juste stocke cette information dans certains de fichier XML dans l'espace de l'utilisateur, mais vous pouvez stocker différemment, bien sûr.

Le cas échéant, comme au démarrage, j'ai une méthode ReadSettings() qui inverse essentiellement le processus, en interrogeant les paramètres enregistrés, en définissant les valeurs. Il pourrait y avoir une solution plus élégante au problème, mais celui-ci a vraiment bien fonctionné pour moi.

Espérons que ça aide.

Questions connexes