2009-07-16 5 views
0

Je veux valider l'entrée de l'utilisateur et je veux l'informer de l'erreur de validation avec la modification de la couleur d'arrière-plan d'un contrôle TextBox Windows Forms standard.Windows Forms Textbox - fondu entrant/sortant fond couleur

Mais au lieu de changer de couleur immédiatement je voudrais utiliser un effet de fondu de couleur.

Existe-t-il un moyen simple de le faire? J'ai également accès aux contrôles Infragistics, je ne sais pas si cela fait une différence.

Répondre

2

En supposant que C# /. NET, la création de votre propre contrôle utilisateur est une solution appropriée à ce problème. Au lieu d'hériter de UserControl, votre contrôle devrait plutôt hériter de TextBox - cela fera votre look de contrôle et d'agir comme un TextBox ordinaire, et vous pouvez ajouter du code pour gérer l'effet de fondu:

public partial class MyCustomTextbox : Textbox 
{ 

} 

Pour faire le fading , il vous faudrait créer une sorte de minuterie pour changer progressivement BackColor avec une fonction comme ceci:

function FadeBackground(float progress) 
{ 
    Color color = Color.FromArgb(255, (int)((1 - progress) * 255), 
     (int)((1 - progress) * 255)); 
    base.BackColor = color; 
} 

lorsque le paramètre progress = 0, cela produira un fond blanc, et quand progress = 1 ce sera complet rouge.

+0

Oui, j'ai un contrôle personnalisé;) Je pensais à une solution similaire à la vôtre, mais je ne sais pas si elle sera bonne pour les performances de l'application, parce que parfois j'ai 20 entrées à l'écran validées:/ Je vais vérifier. Merci de votre aide. – Jarek

+2

Si vous lancez la minuterie uniquement lorsque vous en avez besoin, à 60 FPS, vous ne devriez pas du tout remarquer de dégradation des performances. –

+1

20 contrôles comme ceci ne devrait pas être un problème pour une application WinForms sur quelque chose qui ressemble à un ordinateur moderne. Il n'y a pas de .Net pour Windows 3.1. :) – MusiGenesis