9

DataGridViewプロパティが設定された列を持つデスクトップ アプリでバインドされたデータがありますToolTipTextが、グリッド ビュー (セルまたはセル ヘッダー) にカーソルを合わせてもツール ヒントが表示されません。

ShowCellToolTipsグリッド ビューのプロパティは ですtrue。ブレーク ポイントを使用して、マウス オーバーする前にプログラムで変更されないことを確認しました。

ツール ヒントのテキストが何であるかを確認するためにイベント ハンドラーを作成しようとしましたCellToolTipTextNeededが、イベント ハンドラーが呼び出されません。

見逃したものはありますか?

ありがとう、ロブ

編集:フレームワーク 2.0 を使用しています。

4

12 に答える 12

9

質問から、列のツールチップテキストを設定したようです。列のツールチップテキストは、ヘッダーの上に浮かんでいる場合にのみ表示されます。セルにツールチップテキストを表示するには、イベントをフックアップし、イベント引数にCellToolTipTextNeededの値を設定する必要がありますe.ToolTipText

于 2009-01-08T00:20:33.533 に答える
4

フォームに単一の(空の)列を持つdatagridviewを追加し、その列のToolTipTextプロパティにテキストを追加し、datagridviewのShowCellToolTipsプロパティがTrueに設定されていることを確認すると、カーソルを合わせるとツールチップポップアップが表示されます。その列のヘッダーの上にマウスを置きます。これは元の質問で述べられたことと矛盾しているようですが、私のテストではグリッドはデータにバインドされていませんでした。それが違いを生むかどうかはわかりません。ただし、データバインドされたdatagridviewを使用するプロジェクトでは、ToolTipコンポーネントを使用しました。

(1)ツールチップコンポーネントをフォームに追加します。
(2)datagridviewのToolTip on toolTip1(またはToolTipコンポーネントの同等の名前)プロパティを、表示するテキストに設定します。
(3)datagridviewのShowCellToolTipsプロパティをFalseに設定します。
(4)ヴィオラ!期待どおりに動作します。

于 2010-04-29T21:38:03.983 に答える
4

Cell.ToolTipText プロパティを使用してみてください。おそらく、DataGridView の行をループし、ツールチップを手動で設定する必要があります。

 For Each row As DataGridViewRow In Me.DataGridView.Rows
   Me.DataGridView("MyCol", row.Index).ToolTipText = "MyToolTipText"
 Next

多くの行を持つバインドされた DataGridView には適していない可能性がありますが、数百行のバインドされていない DataGridView ではうまく機能します。お役に立てれば。

于 2010-02-11T09:35:02.347 に答える
3

似たような問題がありましたが、DataGridView で ShowCellToolTip を true に設定することで修正できました。これを行うと、次のコードを送信でき、すべてが正常に機能しました。

tableDocTypes.ShowCellToolTips = true;
tableDocTypes.Rows[i].Cells[columnFormCabinet.Index].ToolTipText = "Cabinet is not defined on the optical server.";
于 2012-05-16T23:43:07.823 に答える
3

グリッド セルのツールチップを表示するには、このイベント ハンドラ " CellToolTipTextNeeded " を使用できます。以下のコード スニペットを参照してください。

this.dataGridView1.ShowCellToolTips = true;
this.dataGridView1.CellToolTipTextNeeded += dataGridView1_CellToolTipTextNeeded;

void dataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
{
    if (e.ColumnIndex >= 0 && e.RowIndex >= 0)           
    {
        e.ToolTipText = this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
    }
}
于 2015-10-31T08:17:55.460 に答える
2

ToolTip ウィジェットとCellMouseEnter,CellMouseLeaveイベントを使用して適切に表示することになりました。最適ではありませんが、私たちが経験していた奇妙な動作を回避します。

于 2009-02-13T18:49:52.327 に答える
1

私は現在、フレームワーク 3.5 で同じ動作を経験しています。CelToolTipTextNeeded イベントを発生させるには、DataSource プロパティを設定する必要があるようです。

于 2010-03-19T14:23:23.087 に答える
0

この記事では、行ごとのツールチップの設定に関するヘルプを探しています。

CellToolTipTextイベントの処理がVS2008SP1で機能することを確認したかっただけです。

テキストを基になるデータ行の値にどのように設定するのか疑問に思っている人にとって、これは役立つかもしれません。

    private void myDGV_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
    {
        // This is used to set tooltiptext for individual cells in the grid.
        if (e.ColumnIndex == 2)  // I only want tooltips for the second column (0-based)
        {
            if (e.RowIndex >= 0)   // When grid is initialized rowindex == 0
            {
                // e.ToolTipText = "this is a test."; // static example.

                DataRowView drv = ((DataGridView)sender).Rows[e.RowIndex].DataBoundItem as DataRowView;
                MyTableRowClass theRow = drv.Row as MyTableRowClass;
                e.ToolTipText = theRow.Col1  + "\r\n" + theRow.Col2;
            }
        }
    }
于 2010-08-12T16:04:19.087 に答える
0

このヒントが特定の問題の解決策になるかどうかはわかりませんが、VS2008 の SP1 を使用していますか? 私が発見したように、この Service Pack はさまざまな問題を解決します。

于 2008-12-30T07:55:32.600 に答える