2009-05-21 5 views
5

Je suis nouveau sur C# et WinForms alors s'il vous plaît excusez-moi, c'est un peu une question de débutant.Comment puis-je afficher une info-bulle montrant la valeur d'une barre de suivi dans WinForms

J'essaie d'ajouter une info-bulle à mon contrôle TrackBar qui montre la valeur actuelle de la barre que vous faites glisser. J'ai instancié un objet info-bulle et essayé le code de gestionnaire suivant, mais il ne montre pas une info-bulle:

private void trackBar1_Scroll(object sender, EventArgs e) 
{ 
    toolTip1.SetToolTip(trackBar1, trackBar1.Value.ToString()); 
} 

Répondre

12

Adam Je viens mis en œuvre une version très simple de cela et cela fonctionne exactement comme prévu ...

est ici le code d'initialisation pour la comparaison

private void InitializeComponent() 
    { 
     this.components = new System.ComponentModel.Container(); 
     this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); 
     this.trackBar1 = new System.Windows.Forms.TrackBar(); 
     ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).BeginInit(); 
     this.SuspendLayout(); 
     // 
     // trackBar1 
     // 
     this.trackBar1.Location = new System.Drawing.Point(12, 166); 
     this.trackBar1.Name = "trackBar1"; 
     this.trackBar1.Size = new System.Drawing.Size(268, 42); 
     this.trackBar1.TabIndex = 1; 
     this.trackBar1.Scroll += new System.EventHandler(this.trackBar1_Scroll); 
     // 
     // Form1 
     // 
     this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
     this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     this.ClientSize = new System.Drawing.Size(292, 273); 
     this.Controls.Add(this.trackBar1); 
     this.Name = "Form1"; 
     this.Text = "Form1"; 
     ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).EndInit(); 
     this.ResumeLayout(false); 
     this.PerformLayout(); 

    } 

    private void trackBar1_Scroll(object sender, EventArgs e) 
    { 
     toolTip1.SetToolTip(trackBar1, trackBar1.Value.ToString()); 

    } 

Et cela fonctionne comme je déplace le ticker à chaque incrément supplémentaire ...

+0

Aaargh! Vous avez raison, ça marche. J'ai trouvé un bug ailleurs dans mon code qui empêchait l'appel du gestionnaire de défilement de la trackbar. Je devrais vérifier ces choses plus attentivement avant de poster sur Stack Overflow. Ceci est un bon exemple de code, donc je vais en faire la réponse acceptée. –

1

Comment avez-vous initialisez la classe toolTip1? La façon dont vous définissez le texte de l'info-bulle semble correcte, peut-être avez-vous défini des propriétés générales avant que le composant ne fasse le travail?

MSDN dit

// Create the ToolTip and associate with the Form container. 
ToolTip toolTip1 = new ToolTip(); 

// Set up the delays for the ToolTip. 
toolTip1.AutoPopDelay = 5000; 
toolTip1.InitialDelay = 1000; 
toolTip1.ReshowDelay = 500; 
// Force the ToolTip text to be displayed whether or not the form is active. 
toolTip1.ShowAlways = true; 
+0

Je viens de l'initialiser avec toolTi p1.SetToolTip (trackBar1, "0"); L'info-bulle indique "0" si vous passez la souris sur le curseur, mais dès que vous déplacez le curseur, l'info-bulle disparaît définitivement. Merci d'avoir répondu si rapidement, mais l'ajout des lignes que vous avez postées ne semble pas faire de différence. –

Questions connexes