2009-04-27 4 views
0

Dans une application Winforms (C# 2, FX2.0, VC2008), j'utilise un contrôle dérivé du panneau pour afficher les contrôles personnalisés. Les commandes sont disposées verticalement et il y a généralement plus que de la place dans la zone visible du panneau.Winforms UserControl affiche des rectangles avec des couleurs inversées

J'ai dessiné un croquis litte de celui-ci:

Panel http://www.ericschaefer.org/Panel.png

Parfois (en général après avoir fait défiler à l'intérieur du panneau) zones rectangulaires semblent avoir leurs couleurs inversées (partie verte dans le croquis). Ces zones sont de taille aléatoire, mais semblent toujours être sur le bord droit du panneau. Comme vous pouvez le voir dans l'esquisse, les boutons fléchés de la barre de défilement des panneaux sont également inversés, mais pas le curseur et la zone de défilement.

Par couleurs inversées, je veux dire noir devient blanc, blanc devient noir, bleu devient brun, etc ...

Je suis d'idées.

  • Cela peut-il être causé par mon application?
  • Est-il même possible de dessiner dans les boutons fléchés de la barre de défilement?
  • Des idées?

EDIT: "Screenshot"

EDIT: je me suis trompé sur le panneau. Il a été un panneau dans le passé, mais il est maintenant un UserControl. Comme ceci:

public class MyPanel : UserControl 
{ 
    public MyPanel() 
    { 
     DoubleBuffered = true; 
     BorderStyle = BorderStyle.Fixed3D; 
     BackColor = Color.DarkBlue; 
     VScroll = true; 
     HScroll = false; 
     AutoScroll = true; 
     AutoScrollMargin = new Size(0, 4); 
    } 
}   
+0

Pourriez-vous poster une capture d'écran de l'application dans cet état? Cela pourrait rendre un peu plus facile de voir ce qui se passe. – ChrisF

+0

Edité la question ... – EricSchaefer

+0

Pourriez-vous faire un écran d'impression plutôt qu'une photo? C'est toujours très difficile de voir ce qui se passe. – ChrisF

Répondre

0

Résolu: Apparemment, c'était la faute du pilote de l'écran tactile. Je peux maintenant reproduire le comportement. Si vous cliquez sur le bouton "défiler vers le bas" sur n'importe quelle barre de défilement via l'écran tactile et maintenez le bouton enfoncé pendant un moment, il continue à défiler lorsque vous le relâchez (le bouton reste enfoncé). Après cela, vous pouvez cliquer où vous voulez, il y aura toujours les "couleurs inversées" sur le côté gauche de la barre de défilement. Cela arrive avec n'importe quelle application (explorer.exe!). Maintenant, c'est encore mieux: Généralement dans Windows si vous faites glisser un bouton de la barre de défilement, vous pouvez dériver de la barre de défilement si vous maintenez le bouton de la souris enfoncé. Mais si vous vous éloignez trop loin, le bouton reviendra à sa position d'origine (où vous avez commencé à glisser). Essayez-le! Les rectangles de couleurs inversées sont exactement aussi larges que la zone où vous pouvez dériver sans que le bouton ne se réenclenche. Je n'essaie même pas de comprendre cela. Nous avons installé un pilote plus récent pour l'écran tactile qui ne continue pas à défiler même après que vous ayez relâché le bouton "défiler vers le bas" et le problème a disparu.Ma pression sanguine est revenue à la normale mais tous les cheveux gris ne deviennent probablement pas noirs je suppose ... Merci quand même ...

1

Utilisez-vous le System.Windows.Forms.Panel? Qu'avez-vous voulu dire quand vous avez dit le contrôle dérivé du Panel?

Si vous utilisez System.Windows.Forms.Panel, cela ressemble à un problème avec le contrôle personnalisé et non le panneau.

pourriez-vous fournir plus d'informations sur le contrôle personnalisé, si possible?

+0

C'est un contrôle personnalisé dérivé de S.W.F.Panel. Tout ce qu'il fait est de placer les sous-contrôles (également des contrôles personnalisés) à l'intérieur de lui-même. Aucun dessin n'est effectué dans le panneau, en plus de la définition de BackColor. – EricSchaefer

+0

On dirait que le doublebuffering a quelques problèmes, mais ne peut pas exactement pointer vers le problème qu'il pourrait créer. –

1

De votre photo, il semble que quelque chose soit en surbrillance, mais la bordure ne correspond à aucun contrôle visible.

Avez-vous un contrôle caché derrière le reste en quelque sorte?

+0

Non, il n'y a pas de contrôle caché. La taille réelle de la zone diffère. Il a été rapporté pour être beaucoup plus grand et aussi beaucoup plus petit que sur la photo. Comme le montre le croquis, il y a également eu deux zones en même temps. – EricSchaefer

Questions connexes