2010-09-13 6 views
1

J'ai placé un bouton sur le formulaire MDI, maintenant quand j'ouvre un formulaire enfant, le bouton reste sur le dessus et distrait le formulaire enfant, y at-il un moyen de le résoudre? J'ai fait le suivant pour renvoyer le bouton quand un enfant est activé. Mais je me demande d'appeler button1.BringToFront();Problème avec les contrôles dans le formulaire MDI

private void MDIParent1_MdiChildActivate(object sender, EventArgs e) 
{ 
    button1.SendToBack(); 
} 

J'ai essayé de suivre mais cela ne fonctionne pas.

private void MDIParent1_Enter(object sender, EventArgs e) 
{ 
    button1.BringToFront(); 
} 

Je pense que d'un bug durable de .net, il y a beaucoup de messages qui tentent de le résoudre, à l'aide de station d'accueil avec un panneau etc, mais juste pour un accueil bouton permet l'espace de travail d'application moins.

+0

Donc, essentiellement, sendtoback fonctionne mais bringtofront ne l'est pas, n'est-ce pas? –

+0

@ siddharth, pas bringtofront ne fonctionne pas! – Thunder

Répondre

0

J'ai trouvé la réponse à ma question! Voici comment je l'ai mis en œuvre, le poste here était ce qui me manquait.

public MDIParent1() 
     { 
      InitializeComponent(); 
      foreach (var ctl in this.Controls) 
      { 
       if (ctl is MdiClient) 
       { 
        (ctl as MdiClient).GotFocus += Client_gotfocus; 
        (ctl as MdiClient).LostFocus += Client_lostfocus; 
        break; 
       } 
      } 

     } 
     private void Client_gotfocus(object sender, EventArgs e) 
     { 
      button1.BringToFront(); 
     } 
     private void Client_lostfocus(object sender, EventArgs e) 
     { 
      button1.SendToBack(); 
     } 
Questions connexes