Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#]Affichage de control

encore moi

    21 novembre 2007 à 15:18:48

    Bonjour

    J'ai encore une erreur : j'ai fait une application et lorsque je veux déplacer un control, l'interieur de vient transparant et ses contours se dessines là où je le déplace. Une fois que je relache la souris tout redevient normale mais c'est assez génants.

    Pour déplacer le control(et les controle a l'intérieur) j'utilise un code comme celui ci :
    1. private void mdpTitre_MouseDown (object sender, MouseEventArgs e)
    2.         {
    3.             if (e.Button == MouseButtons.Left)
    4.                 m_PosClick = e.Location;
    5.         }
    6.         private void mdpTitre_MouseMove (object sender, MouseEventArgs e)
    7.         {
    8.             if (e.Button == MouseButtons.Left)
    9.             {
    10.                 this.mdpTitre.Location = new Point (this.mdpTitre.Location.X + e.X - m_PosClick.X, this.mdpTitre.Location.Y + e.Y - m_PosClick.Y);
    11.                 this.boxMdp.Location = new Point (this.mdpTitre.Location.X - 10, this.mdpTitre.Location.Y - 3);
    12.                 DessineMdpOubl (true, false);
    13.             }
    14.         }


    DessineMdpOubl() est un methode qui définit la position de chaque éléments par rapport au titre du control(c'est des sorte de petite fenetre avec titre et croix).

    Voici ce qu'on peut apercevoir : Image utilisateur

    Est-ce que vous sauriez comment éviter ce problème??

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      21 novembre 2007 à 19:02:54

      Dans ton constructeur rajoute :

      1. SetStyle(ControlStyles.AllPaintingInWmPaint |
      2.   ControlStyles.UserPaint |
      3.   ControlStyles.OptimizedDoubleBuffer, true);
      • Partager sur Facebook
      • Partager sur Twitter
        21 novembre 2007 à 20:35:56

        merci mais ça ne fait rien de plus :(
        • Partager sur Facebook
        • Partager sur Twitter
          21 novembre 2007 à 21:15:18

          Met la propriété DoubleBuffered de ta form à true et essaies de limiter les appels à ta méthode qui déplace la boite.
          • Partager sur Facebook
          • Partager sur Twitter
            22 novembre 2007 à 12:17:55

            Le doublebuff est déjà activer et comment limiter les appelle?

            Est-ce que ce serait bien si je créé une variable static qui s'incremente a chaque appelle, puis je met un if(variable % 3 == 1)??

            J'ai essayer cette methode mais soit c'est sacadé, soit il y a encore les trainé. :(
            • Partager sur Facebook
            • Partager sur Twitter
              22 novembre 2007 à 13:00:41

              Et en mettant "visible = false" pendant le déplacement ?
              • Partager sur Facebook
              • Partager sur Twitter
                22 novembre 2007 à 13:10:00

                J'ai essaye de le mettre là où il y a les commentaire(voir code) mais quand je le met dans le commentaire 1, l'image disparait quand je bouge au dessus. Et quand je le met au commentaire 2, il diparait pendant que je le bouge. Mais il ne réaparait seulement quand je lache la souris.

                Code :
                1. private void optTitre_MouseMove (object sender, MouseEventArgs e)
                2.         {
                3. //Com 1
                4.             if (e.Button == MouseButtons.Left)
                5.             {
                6. //Com 2
                7.                 this.optTitre.Location = new Point (this.optTitre.Location.X + e.X - m_PosClick.X, this.optTitre.Location.Y + e.Y - m_PosClick.Y);
                8.                 this.boxOpt.Location = new Point (this.optTitre.Location.X - 10, this.optTitre.Location.Y - 3);
                9.                 DessineOpt (true, false);
                10.             }
                11.         }
                • Partager sur Facebook
                • Partager sur Twitter

                [C#]Affichage de control

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown