2

PictureBox でホバーしている内容に応じて変化するテキストを使用してツールヒントを作成しようとしています。私のコードは次のようなものです:(混乱を避けるために単純化されています)

private ToolTip tt;

private void Picture_MouseMove(object sender, MouseEventArgs e)
{
    string rollText = 
        <code to determine what text should display based on mouse coordinates>

    tt.SetToolTip(Picture, rollText);
}

これは機能しますが、これの問題は、画像にカーソルを合わせるとツールヒントがちらつくことです。そのため、必要のないときに再描画されないように修正しました。

private string oldRollText = "";
private ToolTip tt;

private void Picture_MouseMove(object sender, MouseEventArgs e)
{
    string rollText = 
        <code to determine what text should display based on mouse coordinates>

    if (rollText != oldRollText)
    {
        oldRollText = rollText;
        tt.SetToolTip(Picture, rollText);
    }
}

しかし今では、ほんの一瞬しか表示されず、最初にロールオーバーすると消え、ロールアウトして再度ロールインするまで二度と表示されません。アニメーションの最初のフレームを何度も再生する場合などに備えて、 3 つの数字ShowAlways = trueすべてを 0、 、、に設定してみました。サイコロはありません。私が見逃しているアイデアはありますか?DelayActive = trueUseFading = falseUseAnimation = false

4

1 に答える 1

0

MouseEnter を使用する方が良いと思います。

private ToolTip tt= new ToolTip();

string rollText;
int mouseX;
int mouseY; 
private void Picture_MouseEnter(object sender, MouseEventArgs e)
{

    //tt.SetToolTip(Picture, rollText);//option 1
    tt.Show();//option 2
}

private void Picture_MouseMove(object sender, MouseEventArgs e)
{   
    mouseX=e.X;
    mouseY=e.Y;
    string rollText = ("Mouse position is:  X:"+mouseX+" Y:"+mouseY);
   tt.SetToolTip(Picture, rollText);//option 2

}

また、MouseLeave を使用してツールチップを削除します。

private void Picture_MouseLeave(object sender, MouseEventArgs e)
    {   

       tt.Hide();

    }

ちらつきを取り除くために自分で試す2つのオプションを入れました。

于 2012-05-06T21:41:06.087 に答える