C#Winformsのラベルにヒントまたはツールチップを追加するにはどうすればよいですか?


回答:


112

ToolTip最初にフォームにコントロールを追加する必要があります。次に、他のコントロールに表示するテキストを設定できます。

ToolTipこれは、次の名前のコントロールを追加した後のデザイナーを示すスクリーンショットですtoolTip1

ここに画像の説明を入力してください


20
うわー、それは複雑で直感に反しているようです、Yuck。
B.クレイシャノン

@ClayShannonある意味ではそうだと思います。しかし、デザインはややエレガントです。一部のコントロールでは、ツールチップは必要ありません。このようにして、ToolTipコントロールはマウスオーバーイベントに登録し、発生したイベントに応じて適切なテキストを表示できます。これはすべてバックグラウンドで発生します。
Yuck 2012年

1
同意する。また、複数のコントロールに同じツールチップコントロールを使用することもできます。
マークエインズワース2015

@MarkAinsworthは、あるコメントが良いことと悪いことを言っているので、おそらくあなたはそれが良いことに同意するか悪いことに同意するかを述べますか?。あなたはそれが良いことに同意すると言っていると思います。
barlop 2018

静的なツールチップしかサポートしていないため、これは悪い設計だと思います。実行時にツールチップをどのように更新しますか?
ArvoBowen18年

91
yourToolTip = new ToolTip();
//The below are optional, of course,

yourToolTip.ToolTipIcon = ToolTipIcon.Info;
yourToolTip.IsBalloon = true;
yourToolTip.ShowAlways = true;

yourToolTip.SetToolTip(lblYourLabel,"Oooh, you put your mouse over me.");

マウスオーバーごとにこれを頻繁に行う場合は、ツールチップを破棄することを忘れないでください。GCが古いツールチップのファイナライザーを呼び出すまで、ハンドルがリークします。
drake7707 2013

21
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip( Label1, "Label for Label1");

15

それを行うためのちょうど別の方法。

Label lbl = new Label();
new ToolTip().SetToolTip(lbl, "tooltip text here");

5

私の考えを共有するためだけに...

Labelクラスを継承するカスタムクラスを作成しました。Tooltipクラスとして割り当てられたプライベート変数とパブリックプロパティTooltipTextを追加しました。次に、MouseEnterデリゲートメソッドを指定しました。これは、複数のラベルコントロールを操作する簡単な方法であり、各ラベルコントロールにツールチップコントロールを割り当てることを心配する必要はありません。

    public partial class ucLabel : Label
    {
        private ToolTip _tt = new ToolTip();

        public string TooltipText { get; set; }

        public ucLabel() : base() {
            _tt.AutoPopDelay = 1500;
            _tt.InitialDelay = 400;
//            _tt.IsBalloon = true;
            _tt.UseAnimation = true;
            _tt.UseFading = true;
            _tt.Active = true;
            this.MouseEnter += new EventHandler(this.ucLabel_MouseEnter);
        }

        private void ucLabel_MouseEnter(object sender, EventArgs ea)
        {
            if (!string.IsNullOrEmpty(this.TooltipText))
            {
                _tt.SetToolTip(this, this.TooltipText);
                _tt.Show(this.TooltipText, this.Parent);
            }
        }
    }

フォームまたはユーザーコントロールのInitializeComponentメソッド(Designerコード)で、Labelコントロールをカスタムクラスに再割り当てします。

this.lblMyLabel = new ucLabel();

また、Designerコードのプライベート変数参照を変更します。

private ucLabel lblMyLabel;

しかし、ユーザーがフォームビジュアルデザイナーを使用して何かを変更するたびに、デザイナーコードが再生成されませんか?
Robert Synoradzki 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.