begin process at 2010 02 10 03:11:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

Annuler la prise de focus d'une Form 'surgissante'


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Annuler la prise de focus d'une Form 'surgissante'

jeudi 24 août 2006 à 21:10:33 | Annuler la prise de focus d'une Form 'surgissante'

Smalo

Membre Club
Bonjour,
Bon je me trouve devant une colle .. En fait j'ai une fenètre principale et je voudrais à la suite d'un évenement, (par exemple survol d'un label) afficher une autre Form mais je ne veux
pas que celle ci prenne le focus.. je voudrai qu'elle s'affiche comme si rien n'était.. j'ai tout essayé mais je ne trouve pas de méthode permettant d'inhiber la prise de focus de la Form 'surgissante'.
j'ai essayé ça :

form_Panneau.TopMost =

true; // ma form panneau est ma form surgissante
form_Panneau.Show();
this.Focus();

Seulement ça ne me convient pas car l'espace d'un court instant ma fenetre principale perd le focus
et du coup ça fait un petit 'flash' sur la barre de titre et le tour de ma fenettre principale.

Merci d'avance....


vendredi 25 août 2006 à 11:06:31 | Re : Annuler la prise de focus d'une Form 'surgissante'

Nikoui

Je n'ai pas testé, mais peut etre en mettant form_Panneau.Enabled = false avant le Show ? (mais même si ca marche, j'ai peur qu'en remettant Enabled à true, la form reprenne le focus...)
vendredi 25 août 2006 à 11:35:44 | Re : Annuler la prise de focus d'une Form 'surgissante'

Smalo

Membre Club

à la limite j'ai meme pas besoin qu'elle soit enable.. mais bon ça marche pas avec un enable false elle prend toujours le focus..
pitin desfois je me demande si il ont pas oublié des fonctions dans ce framework pfff..

vendredi 25 août 2006 à 14:14:32 | Re : Annuler la prise de focus d'une Form 'surgissante'

Nikoui

Disons aussi que ce tu cherches a faire est un peu "tordu" : ouvrir une fenêtre mais empêcher l'utilisateur de s'en servir...

La aussi je n'ai pas testé, mais est qu'en mettant form_Panneau.Show(this); ca arrange les choses ?
Je ne sais pas ce que tu veux faire, mais peut être qu'en passant par des forms MDI ca marcherai mieux ? (la form "surgissante" étant une form fille, elle ne devrait pas provoquer de "flash" sur la form mère...)
vendredi 25 août 2006 à 15:30:24 | Re : Annuler la prise de focus d'une Form 'surgissante'

Smalo

Membre Club

j'ai toujours le chic de faire des trucs 'tordus' :p
en fait je veux afficher un panneau d'information... je pourrais le faire avec un userControl.. mais en fait je le fais avec une Form pour
profiter d'une ombre et de la tranparence... j'ai essayé de déclarer ma form principale mdi et et ensuite indiqué la form surgissante en form fille..
mais la form ne s'affiche pas..
j'ai fais ça :

form_PanneauBilan.Location = coordEcran;
form_PanneauBilan.MdiParent = Pack1.Form1.formCourante;
form_PanneauBilan.Show();

ps : le Show(this) .. ça ne change rien avec ou sans mdi..


 

vendredi 25 août 2006 à 21:30:25 | Re : Annuler la prise de focus d'une Form 'surgissante'

Lutinore

Administrateur CodeS-SourceS
Réponse acceptée !

Salut, encore une fois il faut passer par l'API Win32 :




public partial class Form1 : Form
{
    private const int SWP_NOACTIVATE = 0x0010;
    private const int SWP_SHOWWINDOW = 0x0040;

    [ System.Runtime.InteropServices.DllImport( "user32.dll", SetLastError = true ) ]
    private static extern bool SetWindowPos
    (
        IntPtr hWnd,
        IntPtr hWndInsertAfter,
        int x,
        int y,
        int cx,
        int cy,
        uint flags
    );

    public Form1( )
    {
        InitializeComponent( );

        Label lb = new Label( );
        lb.Location = new Point( 50, 50 );
        lb.BackColor = Color.AliceBlue;
        lb.MouseHover += delegate
        {
            Form f = new Form( );
            //f.FormBorderStyle = FormBorderStyle.FixedToolWindow;
            //f.ShowInTaskbar = false;
            Rectangle r = lb.RectangleToScreen( lb.ClientRectangle );

            SetWindowPos
            (
                f.Handle,
                IntPtr.Zero,
                r.Right + 10,
                r.Top - 10,
                150,
                100,
                SWP_NOACTIVATE | SWP_SHOWWINDOW
            );

            f.Visible = true; // Sinon 'Visible' reste false.
        };

        this.Controls.Add( lb );
    }
}

lundi 28 août 2006 à 12:05:54 | Re : Annuler la prise de focus d'une Form 'surgissante'

Smalo

Membre Club
Je te remercie !! ça marche très bien!
Ps : Si tu connais des bons tutoriaux sur les possibilités que donne l'utilisation de l'API Win32
genre avec la liste des constantes et tout.. je suis prenneur..
Merci encore!
lundi 28 août 2006 à 12:48:19 | Re : Annuler la prise de focus d'une Form 'surgissante'

Lutinore

Administrateur CodeS-SourceS
La doc pour l'API Win32 c'est la MSDN mais il n y a pas vraiment de tutorial, avec le temps on finit par connaître les fonctions les plus utiles.. Les constantes tu les trouves dans les fichiers headers ( *.h ) du C/C++.


Cette discussion est classée dans : form, focus, principale, prise, surgissante


Répondre à ce message

Sujets en rapport avec ce message

Application multi form [ par LuckyLuck ] Bon ben voilà, j'ai fait une application qui est en fait un form, qui crée une seconde classe(le deuxième form) et qui l'affiche. Tt va bien, sauf que Focus d'une form? [ par Bidou ] Bonjour,Petite question :J'ai deux forms, disons f1 et f2. J'ouvre f2 depuis f1 en faisant un ShowDialog().Ma form f2 possède une référence de f1, ce Passer le focus au form [ par ludm ] Bonjour,J'aurais besoin de passer le focus au form après avoir cliqué sur un bouton car j'ai un événement keydown sur le form qui change l'affichage d touche ESCAPE sur Datagrid [ par DADAPOINTCOM ] bonjour, Voila quand mon datagrid s'ouvre sur une form, le datagrid a le focus en fait c'est la premiere ligne qui a le focus je voudrai savoir comm form.show() et form.focus() [ par el_teedee ] Salut, j'ai une form1, et une form2. Je voudrais passer de la 1 à la 2, mais la 2 n'apparait pas en premier plan. Elle apparait, mais je suis obligé perte de focus sur form [ par InfoSep ] Salut, Je travail actuellement sur un projet de type Winform. A l'ouverture de celui-ci, une fenêtre avec une barre de progression apparait et doit en Form principale C#2 avec VS 2005 [ par alecccc ] Bonjour à tous,Debutant en C#.NET j'ai remarqué qu'il m'etait impossible de changer  mon formulaire de demarrage par defaut lors de l'execution de mon probleme de focus [ par cudenetf ] bonjour,j'ai un formulaire qui lance un autre formulaire (composé uniquement de labels).Je ne veux pas que le premier formulaire disparaisse, je veux Focus sur une ligne de datagrid [ par Moomoon07 ] Salut !J'ai une petite question  :D'un form A, j'ouvre un form B avec un paramêtre.Ce paramêtre est le 1er élément d'une des lignes du datagridview du Thread et splashscreen [ par alphacrash ] Salut tout le monde, voilà mon problème :J'ai donc voulu faire un splashscreen dans mon application, mais j'ai un problème de focus, en fait quand le


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales