DataGridViewのツールチップの表示/非表示の仕方のまとめ。
全体を非表示にする方法
DataGrieView全体のツールチップを非表示にする方法は、ShowCellToolTipsプロパティを変更するだけ。
dataGridView1.ShowCellToolTips = false;
一部を非表示にする方法
データ管理されたDataGridViewの場合
- DataSourceが設定されている
- VirtualModeがtrue
など、データが管理されている場合は、CellToolTipTextNeededイベントを使い、各個に設定する。
このイベントは、カーソルがセルの上にあるなど、セルのツールヒントが必要になった時に発生するイベントです。非表示にしたい条件で、 cell.ToolTipText = “”; とすれば、該当の条件のみ非表示にすることができる。
例えば、ColumnIndexが0の列を非表示にするには、以下のようにする。
private void dataGridView1_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
{
// 行ヘッダーと列ヘッダーは除外※
if ((e.RowIndex >= 0) && (e.ColumnIndex >= 0))
{
// ColumnIndexが0の列のツールチップを非表示とする
if (e.ColumnIndex == 0)
{
var cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
cell.ToolTipText = "";
}
}
}
※行ヘッダーと列ヘッダーのIndexは-1なので、それを除外しないまま実行すると、配列[-1]となり、ArgumentOutOfRangeExceptionが発生する。
データが管理されていないDataGridViewの場合
DataSourceの設定もVirtualModeもされていない場合は、Load時に設定。上記同様にToolTipTextを各個に設定する。
例えば、RowIndexが3の列を非表示にするには、以下のようにする。
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
for (int j = 0; j < dataGridView1.Rows.Count; j++)
{
// RowIndexが3以外の行のツールチップを非表示とする
if (j == 3)
{
continue;
}
dataGridView1[i, j].ToolTipText = "";
}
}
3点リーダー出現時のみツールチップを表示させるなど、特定の条件下でのみ表示/非表示させるやり方は模索中。。。いい方法あったら教えてください。
コメント