2012-12-18 5 views
0

J'ai un formulaire. Ce formulaire peut ouvrir un éditeur, qui s'étend de Formulaire. L'éditeur a des liens sur lesquels vous cliquez, ce qui ouvre un formulaire modal pour définir ce lien.Fenêtre modale, mais seulement pour certaines fenêtres

// Main form 
private void OnMainForm_MouseClick(object sender, MouseEventArgs e) 
{ 
    Editor editor = new Editor(); 
    editor.Show(); 
} 



// editor 
private void OnEditorLink_MouseClick(object sender, MouseEventArgs e) 
{ 
    LinkConfigDialog linkDialog = new LinkConfigDialog(); 
    linkDialog.ShowModal(); 
} 

Cela garantit que l'utilisateur ne peut pas cliquer, et tenter de modifier, d'autres liens (ou le même lien) qui l'édition déjà. C'est par conception.

Cependant, maintenant je souhaite laisser les gens ouvrir plusieurs éditeurs. Je veux toujours que les formes modales fonctionnent, mais UNIQUEMENT pour ces éditeurs, pas pour l'ensemble de l'application.

Comment puis-je accomplir ceci?

+1

pourquoi ne pas masquer temporairement la fenêtre de l'appelant, et à la fermeture de la boîte de dialogue, la rendre visible à nouveau, comme avant. ? – Tigran

+0

Je n'ai jamais caché la fenêtre de l'appelant, et je ne veux pas. +1 pour une bonne idée cependant. – MintyAnt

Répondre

1

Je pense que vous devriez écrire une méthode dans votre classe Editor qui "fige" votre boîte de dialogue Editeur. Par exemple, en désactivant les contrôles et ainsi. Vous pouvez ensuite appeler cette méthode lorsqu'un LinkDialog est ouvert. De cette façon, vous pouvez avoir plusieurs instances Editor qui sont seulement désactivées par leurs propres LinkDialog s. Vous pouvez avoir une autre méthode qui réactive les contrôles qui seront appelés lorsque le LinkDialog est fermé.

+0

Ouais, un booléen qui marque quand la fenêtre est levée, et renvoie tous les événements de clic quand le bool est vrai sur l'éditeur. Pas exactement idéal, car il ne sera pas attraper tous les cas, mais fonctionne! – MintyAnt

+0

Que voulez-vous dire par "il ne sera pas attraper tous les cas"? – hattenn

+0

Si quelqu'un ajoute un nouvel événement click pour faire quelque chose, cette vérification ne sera pas là à moins qu'ils ne se souviennent de l'ajouter. – MintyAnt

Questions connexes