DataGridViewCellToolTipTextNeededEventHandler デリゲート
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

Public Delegate Sub DataGridViewCellToolTipTextNeededEventHandler ( _ sender As Object, _ e As DataGridViewCellToolTipTextNeededEventArgs _ )
public delegate void DataGridViewCellToolTipTextNeededEventHandler ( Object sender, DataGridViewCellToolTipTextNeededEventArgs e )
public delegate void DataGridViewCellToolTipTextNeededEventHandler ( Object^ sender, DataGridViewCellToolTipTextNeededEventArgs^ e )
/** @delegate */ public delegate void DataGridViewCellToolTipTextNeededEventHandler ( Object sender, DataGridViewCellToolTipTextNeededEventArgs e )

CellToolTipTextNeeded イベントは、DataGridView コントロールの DataSource プロパティが設定されているか、VirtualMode プロパティが true の場合にだけ発生します。
CellToolTipTextNeeded イベントを処理すると、マウス ポインタがセルの上にあり、コントロールの ShowCellToolTips プロパティ値が true のときは、ハンドラで指定したツールヒント テキストが表示されます。CellToolTipTextNeeded イベントは、セルの現在の状態または値によって決定されたツールヒントを表示する場合に便利です。
CellToolTipTextNeeded イベントは、プログラムによって、またはマウス ポインタがセルに入ったときに、DataGridViewCell.ToolTipText プロパティの値が取得された場合にも必ず発生します。
DataGridViewCellEventArgs.ColumnIndex プロパティと RowIndex プロパティを使用すると、セルの状態または値を特定でき、さらにこの情報を使用して、ToolTipText プロパティを設定できます。このプロパティは、セルの ToolTipText プロパティの値によって初期化され、イベントの値によってオーバーライドされます。
大量のデータを処理するときは、CellToolTipTextNeeded イベントを処理して、複数のセルに対してセルの ToolTipText 値を設定することによるパフォーマンスの低下を防いでください。詳細については、「Windows フォーム DataGridView コントロールを拡張するための推奨される手順」を参照してください。
イベント処理の詳細については、「イベントの利用」を参照してください。
DataGridViewCellToolTipTextNeededEventHandler デリゲートを作成する場合は、イベントを処理するメソッドを識別してください。イベントをイベント ハンドラに関連付けるには、デリゲートのインスタンスをイベントに追加します。デリゲートを削除しない限り、そのイベントが発生すると常にイベント ハンドラが呼び出されます。イベント ハンドラ デリゲートの詳細については、「イベントとデリゲート」を参照してください。

ツールヒントを使用して、ReportsTo 列のセルの内容に関する追加情報を表示するコード例を次に示します。
Private Function Populate(ByVal query As String, ByVal resetUnsharedCounter As Boolean) As DataTable If resetUnsharedCounter Then ResetCounter() End If ' Alter the data source as necessary Dim adapter As New SqlDataAdapter(query, _ New SqlConnection("Integrated Security=SSPI;Persist Security Info=False;" & _ "Initial Catalog=Northwind;Data Source=localhost")) Dim table As New DataTable() table.Locale = System.Globalization.CultureInfo.InvariantCulture adapter.Fill(table) Return table End Function Private count As New Label() Private unsharedRowCounter As Integer Private Sub ResetCounter() unsharedRowCounter = 0 count.Text = unsharedRowCounter.ToString() End Sub Private Sub DataGridView1_CellToolTipTextNeeded(ByVal sender As Object, _ ByVal e As DataGridViewCellToolTipTextNeededEventArgs) _ Handles dataGridView1.CellToolTipTextNeeded If theCellImHoveringOver.ColumnIndex = dataGridView1.Columns("ReportsTo").Index AndAlso _ theCellImHoveringOver.RowIndex > -1 Then Dim reportsTo As String = dataGridView1.Rows(theCellImHoveringOver.RowIndex). _ Cells(theCellImHoveringOver.ColumnIndex).Value.ToString() If String.IsNullOrEmpty(reportsTo) Then e.ToolTipText = "The buck stops here!" Else Dim table As DataTable = Populate( _ "select firstname, lastname from employees where employeeid = '" & _ dataGridView1.Rows(theCellImHoveringOver.RowIndex). _ Cells(theCellImHoveringOver.ColumnIndex).Value.ToString() & _ "'", False) e.ToolTipText = "Reports to " & table.Rows(0).Item(0).ToString() & " " & table.Rows(0).Item(1).ToString() End If End If End Sub
private DataTable Populate(string query, bool resetUnsharedCounter) { if (resetUnsharedCounter) { ResetCounter(); } // Alter the data source as necessary SqlDataAdapter adapter = new SqlDataAdapter(query, new SqlConnection("Integrated Security=SSPI;Persist Security Info=False;" + "Initial Catalog=Northwind;Data Source=localhost")); DataTable table = new DataTable(); table.Locale = System.Globalization.CultureInfo.InvariantCulture; adapter.Fill(table); return table; } private Label count = new Label(); private int unsharedRowCounter; private void ResetCounter() { unsharedRowCounter = 0; count.Text = unsharedRowCounter.ToString(); } private void dataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e) { if (theCellImHoveringOver.ColumnIndex == dataGridView1.Columns["ReportsTo"].Index && theCellImHoveringOver.RowIndex > -1) { string reportsTo = dataGridView1.Rows[theCellImHoveringOver.RowIndex]. Cells[theCellImHoveringOver.ColumnIndex].Value.ToString(); if (String.IsNullOrEmpty(reportsTo)) { e.ToolTipText = "The buck stops here!"; } else { DataTable table = Populate( "select firstname, lastname from employees where employeeid = '" + dataGridView1.Rows[theCellImHoveringOver.RowIndex]. Cells[theCellImHoveringOver.ColumnIndex].Value.ToString() + "'", false); e.ToolTipText = "Reports to " + table.Rows[0].ItemArray[0] + " " + table.Rows[0].ItemArray[1]; } } }
DataTable^ Populate( String^ query, bool resetUnsharedCounter ) { if ( resetUnsharedCounter ) { ResetCounter(); } // Alter the data source as necessary SqlDataAdapter^ adapter = gcnew SqlDataAdapter( query, gcnew SqlConnection( L"Integrated Security=SSPI;Persist Security Info=False;" L"Initial Catalog=Northwind;Data Source= localhost" ) ); DataTable^ table = gcnew DataTable; adapter->Fill( table ); return table; } Label^ count; int unsharedRowCounter; void ResetCounter() { unsharedRowCounter = 0; count->Text = unsharedRowCounter.ToString(); } void dataGridView1_CellToolTipTextNeeded( Object^ /*sender*/, DataGridViewCellToolTipTextNeededEventArgs^ e ) { if ( theCellImHoveringOver->ColumnIndex == dataGridView1->Columns[ L"ReportsTo" ]->Index && theCellImHoveringOver->RowIndex > -1 ) { String^ reportsTo = dataGridView1->Rows[ theCellImHoveringOver->RowIndex ]->Cells[ theCellImHoveringOver->ColumnIndex ]->Value->ToString(); if ( reportsTo->Equals( L"" ) ) { e->ToolTipText = L"The buck stops here!"; } else { DataTable^ table = Populate( String::Format( L"select firstname, lastname from employees where employeeid = '{0}'", dataGridView1->Rows[ theCellImHoveringOver->RowIndex ]->Cells[ theCellImHoveringOver->ColumnIndex ]->Value ), false ); e->ToolTipText = String::Format( L"Reports to {0} {1}", table->Rows[ 0 ]->ItemArray[ 0 ], table->Rows[ 0 ]->ItemArray[ 1 ] ); } } }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


System.Windows.Forms 名前空間
DataGridView クラス
DataGridView.CellToolTipTextNeeded イベント
DataGridView.DataSource プロパティ
DataGridView.VirtualMode プロパティ
DataGridView.ShowCellToolTips プロパティ
DataGridViewCellToolTipTextNeededEventArgs クラス
DataGridViewCellToolTipTextNeededEventArgs.ToolTipText プロパティ
DataGridViewCell.ToolTipText プロパティ
その他の技術情報
Windows フォーム DataGridView コントロールを拡張するための推奨される手順
- DataGridViewCellToolTipTextNeededEventHandler デリゲートのページへのリンク