none
Probleme entre les Forms RRS feed

  • Question

  • Salut a tous ,
    SVP j'ai un petit probleme si quelqu'un pourrait m'aider , j'ai realisé une petite application qui contient plusieurs Forms ,
    -je veux que si j'appel une Form ; je ne peux pas toucher la premiere et si c'est possible elle devient sombre (la 1ere).
    -meme je permet pas la navigation entre Forms avec (Alt+Tab) et la sortie Avec (Alt+F4).
    merci d'avance.
    dimanche 21 septembre 2008 14:37

Réponses

  • Bonjour,

     

    je vous conseille d'utiliser la méthode ShowDialog() lors de l'appel de votre 2ème form (http://msdn.microsoft.com/fr-fr/library/c7ykbedk.aspx).

     

    En espérant avoir pu vous aider.

     

    lundi 22 septembre 2008 06:30
  • Salut "Audrey" , salut tt le monde ,

    le code de grisage est le suivant que n'importe qui peut creer une form avec ces fonctions et faire hériter les autres  fenetres de cette "form" :

    Code Snippet

    #region griser une form

    private bool mBln_Griser = false;

    private void button1_Click(object sender, EventArgs e)

    {

    mBln_Griser = !mBln_Griser;

    this.InvalidateAll(this);

    }

    private void InvalidateAll(Control objControl)

    {

    foreach (Control objChildCtrl in objControl.Controls)

    {

    InvalidateAll(objChildCtrl);

    }

    objControl.Invalidate();

    }

    protected override void OnLoad(System.EventArgs e)

    {

    base.OnLoad(e);

    AddHandlerControlPaint(this);

    }

    protected override void OnClosed(System.EventArgs e)

    {

    base.OnClosed(e);

    RemoveHandlerControlPaint(this);

    }

    private void AddHandlerControlPaint(Control objControl)

    {

    foreach (Control objChildCtrl in objControl.Controls)

    {

    AddHandlerControlPaint(objChildCtrl);

    }

    objControl.Paint += Control_Paint;

    }

    private void RemoveHandlerControlPaint(Control objControl)

    {

    foreach (Control objChildCtrl in objControl.Controls)

    {

    RemoveHandlerControlPaint(objChildCtrl);

    }

    objControl.Paint -= Control_Paint;

    }

    protected void Control_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

    {

    //if (mBln_Griser)

    this.GriserEcran(e.Graphics, (Control)sender);

    }

    private void GriserEcran(Graphics objGraphics, Control objControl)

    {

    Image objBitmap = new Bitmap(objControl.Width, objControl.Height,System.Drawing.Imaging.PixelFormat.Format32bppArgb);

    Graphics objGraph = Graphics.FromImage(objBitmap);

    objGraph.Clear(Color.Black);

    System.Drawing.Imaging.ColorMatrix objColorMatrix = new System.Drawing.Imaging.ColorMatrix();

    objColorMatrix.Matrix33 = 0.25F;

    System.Drawing.Imaging.ImageAttributes objImageAttributes = new System.Drawing.Imaging.ImageAttributes();

    objImageAttributes.SetColorMatrix(objColorMatrix);

    objGraphics.DrawImage(objBitmap, objControl.ClientRectangle, 0, 0, objBitmap.Width, objBitmap.Height, GraphicsUnit.Pixel, objImageAttributes);

    }

    #endregion

     

     

    merci a qui m'a posté le code . Apres je vais essayé d'arranger tout ce qu'on a dit dans une autre discution pour eclairer les choses aux autres lecteurs et aider ce qu'ils ont besoin ,si on peut dire, de ce petit tutorial .

     

    mardi 23 septembre 2008 02:09

Toutes les réponses

  • Bonjour,

     

    je vous conseille d'utiliser la méthode ShowDialog() lors de l'appel de votre 2ème form (http://msdn.microsoft.com/fr-fr/library/c7ykbedk.aspx).

     

    En espérant avoir pu vous aider.

     

    lundi 22 septembre 2008 06:30
  • Salut ,

    merci "Audrey" , j'ai utilisé "ShowDialog" et pour que je permet pas la navigation entre les Forms avec 'Alt+Tab' c'est ShowInTaskBar = false ; il reste maintenant 'Alt+F4' et la 1ere Form devient sombre .

    re merci et pardon pour le retard .

     

    lundi 22 septembre 2008 13:21
  • Pour la couleur, regardez la propriété Opacity et/ou BackColor de votre form, et votre problème de Alt+F4 voici un article qui devrait vous aider : http://support.microsoft.com/kb/462714/fr
    lundi 22 septembre 2008 13:26
  • merci "Audrey" pour la reponse , j'ai essayé la propriete Opacity je trouve que c'est utile pour moi mais ya un probleme ,

    je veux que lors de l'appel de Form2 -->Form1.Opacity=20 par ex (% ne l'accepte pas), je vois que tu peux la changer que depuis l'IDE , ya til un moyen de modifier la valeur ?

    merci encore pour le lien .

    lundi 22 septembre 2008 13:59
  • Avant de faire votre ShowDialog() pour la form2 vous faites un :

    Code Snippet

    this.opacity = 20;


    et ça devrait fonctionner.
    lundi 22 septembre 2008 14:03
  • mais justement ça marche pas .

    lundi 22 septembre 2008 14:06
  • D'après la MDSN (http://msdn.microsoft.com/fr-fr/library/system.windows.forms.form.opacity(VS.80).aspx) pour obtenir une opacité de 20 %  il faut écrire :

    Code Snippet

    this.opacity = 0.20


    lundi 22 septembre 2008 14:26
  • donc d'apres MSDN , la vaeur par defaut c'est 1.00 , et si je veux que le pourcentage d'opacité devient 20% je dois ecrire this.opacity=0.20 , mais apres l'essai je trouve que c'est pas interessant ( ça rend le formulaire transparant) . il y'a quelqu'un qui m'a posté quelque lignes de code je vais les essayé et si ça fonctionne je les poserai dans le forum.

    merci comme meme "Audrey" .

     

    lundi 22 septembre 2008 14:43
  • Salut "Audrey" , salut tt le monde ,

    le code de grisage est le suivant que n'importe qui peut creer une form avec ces fonctions et faire hériter les autres  fenetres de cette "form" :

    Code Snippet

    #region griser une form

    private bool mBln_Griser = false;

    private void button1_Click(object sender, EventArgs e)

    {

    mBln_Griser = !mBln_Griser;

    this.InvalidateAll(this);

    }

    private void InvalidateAll(Control objControl)

    {

    foreach (Control objChildCtrl in objControl.Controls)

    {

    InvalidateAll(objChildCtrl);

    }

    objControl.Invalidate();

    }

    protected override void OnLoad(System.EventArgs e)

    {

    base.OnLoad(e);

    AddHandlerControlPaint(this);

    }

    protected override void OnClosed(System.EventArgs e)

    {

    base.OnClosed(e);

    RemoveHandlerControlPaint(this);

    }

    private void AddHandlerControlPaint(Control objControl)

    {

    foreach (Control objChildCtrl in objControl.Controls)

    {

    AddHandlerControlPaint(objChildCtrl);

    }

    objControl.Paint += Control_Paint;

    }

    private void RemoveHandlerControlPaint(Control objControl)

    {

    foreach (Control objChildCtrl in objControl.Controls)

    {

    RemoveHandlerControlPaint(objChildCtrl);

    }

    objControl.Paint -= Control_Paint;

    }

    protected void Control_Paint(object sender, System.Windows.Forms.PaintEventArgs e)

    {

    //if (mBln_Griser)

    this.GriserEcran(e.Graphics, (Control)sender);

    }

    private void GriserEcran(Graphics objGraphics, Control objControl)

    {

    Image objBitmap = new Bitmap(objControl.Width, objControl.Height,System.Drawing.Imaging.PixelFormat.Format32bppArgb);

    Graphics objGraph = Graphics.FromImage(objBitmap);

    objGraph.Clear(Color.Black);

    System.Drawing.Imaging.ColorMatrix objColorMatrix = new System.Drawing.Imaging.ColorMatrix();

    objColorMatrix.Matrix33 = 0.25F;

    System.Drawing.Imaging.ImageAttributes objImageAttributes = new System.Drawing.Imaging.ImageAttributes();

    objImageAttributes.SetColorMatrix(objColorMatrix);

    objGraphics.DrawImage(objBitmap, objControl.ClientRectangle, 0, 0, objBitmap.Width, objBitmap.Height, GraphicsUnit.Pixel, objImageAttributes);

    }

    #endregion

     

     

    merci a qui m'a posté le code . Apres je vais essayé d'arranger tout ce qu'on a dit dans une autre discution pour eclairer les choses aux autres lecteurs et aider ce qu'ils ont besoin ,si on peut dire, de ce petit tutorial .

     

    mardi 23 septembre 2008 02:09