2009-09-28 8 views
0

J'ai effectué un événement de souris global dans mon application Windows. Quand je clique sur le bouton central de ma souris, je veux faire une forme particulière ...Comment faire un formulaire Windows à venir dans l'application Windows fait dans C#?

Il y a des applications qui fonctionnent en mode plein écran, donc j'ai besoin de faire ceci, pour faire ma forme visible par les utilisateurs, car c'est le seul moyen de le voir. Puisque Alt + Tab est désactivé. Ceci est une application de kiosque.

J'ai essayé d'utiliser Topmost = true pour ce formulaire particulier et J'ai essayé d'utiliser le code ci-dessous ... Mais pas d'utilisation. Je ne reçois pas ma forme devant.

[DllImport("User32.dll")] 
    public static extern Int32 SetForegroundWindow(int hWnd);  

    [DllImport("user32.dll")] 
    public static extern int FindWindow(string lpClassName, string lpWindowName);       

    private void BringToFront(string className,string CaptionName) 
    { 
     SetForegroundWindow(FindWindow(className,CaptionName)); 
    } 

La touche de raccourci globale qui doit déclencher cette forme pour amener front fonctionne parfaitement.

Comment faire ma forme venir ??? Merci.

Répondre

2

obtenir la poignée de la fenêtre et faire ce

SetWindowPos (hwnd, HWND_TOPMOST, 0,0,0,0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);

+0

@Andrew Keith, j'ai essayé, mais toujours pas de fruits. – Anuya

3

pas mon truc, mais avez-vous essayé de jouer avec:

this.BringToFront(); 

this.Activate(); 
+0

cela fonctionne pour moi. –

0

Vous devez définir la forme de plus haute fullscreen false, puis continuer.

0

Vous n'appelez peut-être pas votre méthode BringToFront correctement. Pour la fonction API FindWindow, lpClassName serait le nom de votre application (par exemple "MyApplication.exe"), tandis que lpWindowName fait référence à la légende dans la barre de titre du formulaire particulier (par exemple "Form1"). Habituellement avec FindWindow vous passez dans l'un ou l'autre, par exemple:

FindWindow("MyApplication.exe", null); 
// or 
FindWindow(null, "Form1"); 

Je ne sais pas ce qui se passe lorsque vous passez deux.

Vous pouvez également simplement faire quelque chose de simple pour y parvenir, comme appeler la méthode Activate() du formulaire particulier.

+0

J'ai essayé ce qui précède, mais ne fonctionne pas ... – Anuya

+0

Je pense que vous devriez poster du code supplémentaire. Je ne suis pas sûr de ce que tu fais exactement pour être en mode kiosque. Montrer des formes et changer leur position dans la pile z est assez simple et basique dans Windows, mais vous faites peut-être quelque chose de bizarre. – MusiGenesis

+0

@MusiGenesis, je ne peux pas poster tout mon code ici, car il y en a beaucoup. Oui c'est bizarre pour moi aussi ... Il y aura une autre application en cours d'exécution sur mon système en mode plein écran. J'ai besoin d'un moyen de montrer mon formulaire à l'utilisateur lorsque l'utilisateur clique sur le bouton central de la souris. J'ai testé mon bouton central de la souris comme événement global, en ajoutant un message "HI". et ça fonctionne parfaitement. La seule chose est, j'ai besoin de montrer ma forme maintenant. Note :: Mon code pour montrer le formulaire n'est pas dans la même forme, il est dans un endroit différent. Cela fait-il un problème? – Anuya

4

Je l'ai résolu, en faisant ceci:

this.TopMost = true; 
this.TopMost = false; 
+0

cela fonctionne pour moi. –

+0

cela fonctionne pour moi, mais je dois d'abord faire "this.BringToFront()" –

Questions connexes