Как я могу отобразить всплывающую подсказку, показывающую значение трекбара в WinForms - PullRequest
5 голосов
/ 21 мая 2009

Я новичок в C # и WinForms, поэтому, пожалуйста, извините, это вопрос новичка.

Я пытаюсь добавить всплывающую подсказку к своему элементу управления TrackBar, которая показывает текущее значение панели при ее перетаскивании. Я создал объект ToolTip и попробовал следующий код обработчика, но он не показывает никакой подсказки:

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

Ответы [ 2 ]

12 голосов
/ 21 мая 2009

Адам Я только что реализовал очень простую версию этого, и она работает точно так, как ожидалось ...

Вот код инициализации для сравнения

    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());

    }

И это работает, когда я перемещаю тикер на каждый дополнительный шаг ...

1 голос
/ 21 мая 2009

Как вы инициализировали класс toolTip1? То, как вы устанавливаете текст всплывающей подсказки, выглядит хорошо, может быть, вы установили некоторые общие свойства, прежде чем компонент выполнит свою работу?

MSDN говорит

// 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;
...