注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。
DataGridView内のあるセルが、現在画面に表示されているか調べるには、DataGridViewCell.Displayedプロパティを使います。DataGridViewCell.Visibleプロパティでは、セルが非表示となっているか(つまり、セルのある列または行が非表示となっているか)を調べることができますが、Displayedプロパティでは、画面の外にスクロールされて表示されていない場合を含めて調べることができます。セルの一部が少しでも画面に表示されていれば、DisplayedプロパティはTrueになるようです。
(0, 0)のセルがスクロールアウトされているときに、現在のセルを(0, 0)にする例を示します。
If Not DataGridView1(0, 0).Displayed Then DataGridView1.CurrentCell = DataGridView1(0, 0) End If
if (!DataGridView1[0, 0].Displayed)
{
DataGridView1.CurrentCell = DataGridView1[0, 0];
}
DataGridViewの列や行が現在画面に表示されているかも、Displayedプロパティ(列の場合はDataGridViewBand.Displayedプロパティ、行の場合はDataGridViewRow.Displayedプロパティ)で調べることができます。
インデックスが0の列と行が画面に表示されているか調べる例を示します。
If DataGridView1.Columns(0).Displayed Then Console.WriteLine("インデックス0の列は表示されています") End If If DataGridView1.Rows(0).Displayed Then Console.WriteLine("インデックス0の行は表示されています") End If
if (DataGridView1.Columns[0].Displayed) { Console.WriteLine("インデックス0の列は表示されています"); } if (DataGridView1.Rows[0].Displayed) { Console.WriteLine("インデックス0の行は表示されています"); }
補足:列や行が画面に表示されているか調べる別の方法としては、Stateプロパティ(列の場合はDataGridViewElement.Stateプロパティ、行の場合はDataGridViewRow.Stateプロパティ)にDataGridViewElementStates.Displayed値が含まれているか調べる方法があります。しかし行の場合は共有行でStateプロパティが使えませんので、代わりにDataGridViewRow.GetStateメソッドを使用する必要があります。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。