質問

私は、カスタムコントロール(C#の、視覚的なスタジオを)持っています。私はMouseHoverイベントにツールチップを表示したい。

しかし、関係なく、私は何をすべきか、それが複数回を示す可能性を示していないか、持っていないのどちらか。

私はそれはのような単純なものだろうと思いました

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

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

しかし、これは動作しません。私は物事の束を試してみましたが、それは仕事を得るように見えることはできません。私は、ディスプレイのためにそれからプライベートフィールドにアクセスしたいので、私は、ツールチップは、コンポーネントの一部である持っていると思います。

任意の助けてくれてありがとう。

役に立ちましたか?

解決

あなたは、コンストラクタでツールチップをインスタンス化し、マウスホバーでそれを示すことがありますか?

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

他のヒント

MouseHoverマウスがコントロール上を移動するたびに発射されます。だからあなたは、新しいツールチップにイベントが発生している一つ一つの時間を作成しています。あなたはこのウィジェットの複数のインスタンスを参照してください理由です。

ジョセフの答えをお試しください

ただ、デザイナーを使用してツールチップを追加することが問題と比べて乱暴に異なるコードを生成します。

Form1.Designer.cs:(プライベート変数は、読みやすくするために、クラスの先頭に移動)

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

        // ...
    }
}

私はあなたのコンポーネントにだけツールチップと容器のものを抽出することができ確信してます。

それはすべてありますMSDNを読む!

あなたは別の解決策を試すことができます:

<時間>
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;
}
<時間>

希望私が助け

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top