24

テキスト ボックスの 1 つでツールヒントを使用したい Windows フォーム C# アプリケーションがあります。Form クラスのコンストラクターでツールチップを初期化すると、初めて機能します。そのため、マウスでテキスト ボックスにカーソルを合わせると機能しますが、toolTip がタイムアウトして消えると、マウスを離してコントロールに戻しても再表示されません。私はそれが戻ってくることを期待します。私は何を間違っていますか?

ツールチップを初期化する方法は次のとおりです。

myTip = new ToolTip();
myTip.ToolTipIcon = ToolTipIcon.Info;
myTip.IsBalloon = true;
myTip.ShowAlways = true;

myTip.SetToolTip(txtMyTextBox,"My Tooltip Text");
4

9 に答える 9

25

今日も同じような問題がありました。ツールチップが表示されない場合がありました。フォーム内のすべてのコントロールに対して1つのToolTipコントロールがありました。

また、すべてのコントロールにMouseEnterイベントが自動的に追加されたため、MouseEnterイベントを次のように変更しました。

_tooltip.Active = false;
_tooltip.Active = true;

バグは修正されましたが、理由はわかりません。

また、バグは常にWindows XPマシンで発生しましたが、WindowsVistaでは発生しませんでした。

于 2009-04-07T17:48:23.687 に答える
17

マイクロソフトがそれについて知っていることを知って幸せになると思います...約5年以来...

  • 2005年2月21日バグは再現可能として認められました
  • 2005年3月29日うーん、修正するかもしれませんが、後で...
  • 2005年11月15日実際には大きなバグではなく、あまり発生しないため、修正しません。

くそーマイクロソフトが解決したくないバグに出くわしたとき、私はそれが大好きです!今回はコーナーケースと呼ばれていますが、前回は解決が難しかったです...

http://connect.microsoft.com/VisualStudio/feedback/details/115385/tooltip-stop-showing-after-autopopdelay

私のプログラムのバグは単なるコーナーケースであり、解決するのが難しすぎることをクライアントに伝えようとしています...

于 2010-07-06T10:10:09.393 に答える
8

今日も同様の問題がありました。VS 2010 SP1 .Net 3.5
AutoPopDelay-Time の後、ToolTip に Controls が表示されませんToolTipText
ケビンのソリューションは、問題を解決する唯一の方法です。

これを独自の ToolTip クラスにカプセル化します。

public class ToolTip : System.Windows.Forms.ToolTip 
{
    public ToolTip() : base() { }

    public ToolTip(System.ComponentModel.IContainer components) : base(components) { }

    public new void SetToolTip(System.Windows.Forms.Control ctl, string caption) 
    {
        ctl.MouseEnter -= new System.EventHandler(toolTip_MouseEnter);
        base.SetToolTip(ctl, caption);
        if(caption != string.Empty)
        ctl.MouseEnter += new System.EventHandler(toolTip_MouseEnter);
    }

    private void toolTip_MouseEnter(object sender, EventArgs e) 
    {
        this.Active = false;
        this.Active = true;
    }
}
于 2011-03-15T07:49:34.500 に答える
5

VB.NETでこの問題が発生しました。私がしたことは、TooTip コントロールをフォームにドロップし、ターゲット コントロールの MouseHover イベントで、ToolTip のプロパティを設定することでした。これは、5 つの異なる Label コントロールに対して 1 つの ToolTip コントロールを使用したためです。それはうまくいきました。(本当は、ToolTip をすぐに表示したかったので、代わりに MouseEnter イベントを使用しました。) 仕事に着いたら、明日正確なコードを投稿できます。

于 2009-02-18T03:21:19.183 に答える
1

私はこれでこの問題を解決しました

if (t == null)
{
    t = new ToolTip();
}
t.IsBalloon = true;
t.ToolTipTitle = "Stop";
t.ToolTipIcon = ToolTipIcon.Error;
t.Show("", yourControlonWhichToApplyToolTip, 0);

t.Show("PDescription", yourControlonWhichToApplyToolTip, 1000);

空のツールチップを追加したことに注意してください。

于 2011-01-31T09:46:05.417 に答える
1

価値があるのは、Windows XP システムでこの問題が発生していたのですが、(ツールボックスから) フォームに少なくとも 1 つのツールヒント コントロールを手動で配置すると、コード内で必要な数のツールヒントを作成できることに気付くまででした。すべてうまくいくでしょう。

ただし、コードですべてのツールチップを作成しようとすると (たとえば、formload イベントで)、ヒントは一度だけ表示され、二度と表示されません。「なぜこれが起こるのか」という正確な話をお伝えすることはできませんが、この問題を何度か繰り返しましたが、常に同じ結果が得られました。オブジェクトスコープと関係があるかもしれませんが、よくわかりません。

そのため、今では習慣として、常に少なくとも 1 つの Visual Studio ツールヒント コントロールを含めてから、残りをコード内に含めています。

于 2010-04-09T22:38:31.853 に答える
1

Windows 7で問題が発生したので、このスレッドを見つけました。

私の場合、これは tooltip_MouseEnter で機能しませんでした:

tooltip.Active = false;
tooltip.Active = true;

だから私は次のことを試しました:

this.toolTip.SetToolTip(this.txtbx1, "tooltip-text");

これは私にとってはうまくいきました。

于 2014-08-01T07:02:58.520 に答える
0
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();

private void textBox_MouseHover(object sender, EventArgs e)
{
    ToolTip1.Show("YOUR TEXT", textBox);
}

private void textBox_MouseLeave(object sender, EventArgs e)
{
    ToolTip1.Active = false;
    ToolTip1.Active = true;
}
于 2016-07-30T09:13:40.303 に答える