Domanda

Ho un controllo personalizzato (C#, visual studio).Voglio mostrare un suggerimento sul mousehover evento.

Tuttavia, non importa quello che faccio, o non si presenta o ha la possibilità di mostrare più volte.

Ho pensato che sarebbe stato così semplice come:

private void MyControl_MouseHover(object sender, EventArgs e)
{
    ToolTip tT = new ToolTip();

    tT.Show("Why So Many Times?", this);
}

Ma questo non funziona.Ho provato un sacco di cose ma non riesco a farlo funzionare.Vorrei avere il tooltip essere parte del componente, in quanto ho voglia di accesso privata, campi da esso per la visualizzazione.

Grazie per qualsiasi aiuto

È stato utile?

Soluzione

Hai provato a creare l'istanza di descrizione nel costruttore e mostrando il puntatore del mouse?

public ToolTip tT { get; set; }

public ClassConstructor()
{
    tT = new ToolTip();
}

private void MyControl_MouseHover(object sender, EventArgs e)
{
    tT.Show("Why So Many Times?", this);
}

Altri suggerimenti

Il MouseHover viene generato ogni volta che il mouse passa sopra il vostro controllo.Così il vostro sono la creazione di un nuovo suggerimento ogni volta che viene generato l'evento.Ecco perché si vede più istanze di questo widget.Tenta di Joseph risposta

Solo l'aggiunta di una descrizione, utilizzando la finestra di progettazione genera selvaggiamente codice diverso rispetto a quello in questione.

Form1.Designer.cs:(variabili private spostato nella parte superiore della classe per migliorare la leggibilità)

partial class Form1
{
    private System.ComponentModel.IContainer components = null;
    private System.Windows.Forms.Label label1;
    private System.Windows.Forms.ToolTip toolTip1;

    // ...

    private void InitializeComponent()
    {
        this.components = new System.ComponentModel.Container();
        this.label1 = new System.Windows.Forms.Label();
        this.toolTip1 = new System.Windows.Forms.Tooltip(this.components);

        // ...

        this.toolTip1.SetToolTip(this.label1, "abc");

        // ...
    }
}

Sono sicuro che si potrebbe estrarre solo la descrizione e contenitore di roba in un componente.

Leggi di MSDN è tutto lì!

Si può provare un'altra soluzione:


private System.Windows.Forms.ToolTip toolTip1;

private void YourControl_MouseHover(object sender, EventArgs e)
{
     toolTip1 = new System.Windows.Forms.ToolTip();
     this.toolTip1.SetToolTip(this.YourControl, "Your text here :) ");
     this.toolTip1.ShowAlways = true;
}

Spero di aiutare

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top