3

ツールチップを使用してTreeNodeの詳細な説明を表示する場合、ツールチップは、ノードのテキストを完成させているかのように、ノードの上に描画されます。また、テキストが長い場合、ツールチップはテキストが画面を超えるように配置されます。

しかし、私が必要としているのは、TreeNodeの上ではなく、マウスポインタのすぐ下に表示するツールチップです。

これを行う方法はありますか?


語るのではなく見せる:

方法:

いかがですか

私が欲しい方法:

どのように私が欲しい

4

3 に答える 3

8

探していた答えは見つかりませんでしたが、どういうわけか思い通りに機能させました。

以前は、ツールチップを次のように設定しようとしていました。

    private void treeView1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
        TreeNode node = treeView1.GetNodeAt(e.X, e.Y);
        if (node != null)
        {
                string text = GetNodeTooltip(node);
                string currentText = toolTip1.GetToolTip(treeView1);

                if (text.Equals(currentText) == false)
                {
                    toolTip1.SetToolTip(treeView1, text);
                }
            }
            else
            {
                toolTip1.SetToolTip(tree, string.Empty);
            }
        }
        else
        {
            toolTip1.SetToolTip(tree, string.Empty);
        }
    }

今、私treeView1.ShowNodeToolTips=trueは作成し、すべてのノードを作成するときにTreeNode.ToolTipText、目的のテキストでその値を設定するだけです。

于 2008-11-21T16:57:34.370 に答える
3
private ToolTip toolTipController = new ToolTip() { UseFading = false,UseAnimation = false};

protected override void OnMouseMove(MouseEventArgs e)
{
    var node = GetNodeAt(e.X, e.Y);
    if (node != null)
    {
        var text = node.Text;

        if (!text.Equals(toolTipController.GetToolTip(this)))
        {
            toolTipController.Show(text, this, e.Location, 2000);
        }
    }
    else
    {
        toolTipController.RemoveAll();
    }
}
于 2010-08-22T13:15:44.270 に答える
2

ToolTip を定義し、TreeView の MouseOverEventHandler を記述する必要があります。MouseOverEventHandler で、マウスが配置されているノードを計算し、説明の ToolTip を表示します。また、ツールチップの説明を複数回設定していないことを確認してください。そうしないと、動作が非常に見苦しくなります。

より良い方法は、フォームの左下にある StatusStrip に説明を表示することです。

アップデート:

質問を明確にしたので、OK。ToolTip.Show座標を指定できるメソッドを使用できます。

public void Show(
    string text,
    IWin32Window window,
    int x,
    int y,
    int duration
)

明らかに、x と y にオフセットを追加する必要があります。

于 2008-10-02T14:55:12.133 に答える