.NET TIPS

DataGridコントロールでフォーカスのあるセル位置を取得/設定するには?

デジタルアドバンテージ
2004/06/11

 DataGridコントロールで、現在フォーカスのあるセルの位置(つまり、現在選択されているセルの行番号と列番号)を取得/設定するには、DataGridクラス(System.Windows.Forms名前空間)のCurrentCellプロパティを利用する。

 CurrentCellプロパティは、行番号を格納するRowNumberプロパティと、列番号を格納するColumnNumberプロパティを持つDataGridCell構造体のデータである。なお、行番号と列番号は0番から開始するので注意してほしい。

 プログラムからフォーカスのあるセルの位置を変えたければ、あらかじめ値を設定したDataGridCellオブジェクトを作成し、それをDataGridコントロールのCurrentCellプロパティにセットすればよい。

 次のサンプル・コードでは、このCurrentCellプロパティを使って、フォーカスあるセル位置の取得と設定を行っている。

// フォーカスのあるセル位置を取得するサンプル・コード
DataGridCell curCell = dataGrid1.CurrentCell;
MessageBox.Show(
  "フォーカス・セルの\r\n" +
  "行番号は" + curCell.RowNumber + "で、\r\n" +
  "列番号は" + curCell.ColumnNumber + "です。");

// セル位置を指定してフォーカスを設定するサンプル・コード
// 例:1行1列目のセルにフォーカスを設定。
dataGrid1.CurrentCell = new DataGridCell(1, 1);
フォーカスのあるセル位置の取得と設定を行うサンプル・プログラム(C#版)
 
' フォーカスのあるセル位置を取得するサンプル・コード
Dim curCell As DataGridCell = DataGrid1.CurrentCell
MessageBox.Show( _
  "フォーカス・セルの" & vbCrLf & _
  "行番号は" & curCell.RowNumber & "、" & _
  "列番号は" & curCell.ColumnNumber & "です。")

' セル位置を指定してフォーカスを設定するサンプル・コード
' 例:1行1列目のセルにフォーカスを設定。
DataGrid1.CurrentCell = New DataGridCell(1, 1)
フォーカスのあるセル位置の取得と設定を行うサンプル・プログラム(VB.NET版)

 上の例では、セルの行番号と列番号を指定してフォーカスの取得と設定を行っている。これ以外の方法では、セルの列番号は指定せずにセルの行番号のみを指定してフォーカスを取得/設定することもできる。これには、CurrentCellプロパティの替わりにDataGridクラスのCurrentRowIndexプロパティを使用すればよい。CurrentRowIndexプロパティでは、行インデックス(=行番号)が取得/設定できる。

DataGridコントロールでは選択とフォーカスは別物

 なお、DataGridコントロールでは、行の選択はセルのフォーカスとは別物で、必ずしも一致するとは限らない。例えば次の画面のように、1行1列目にフォーカスを置いたまま、3行目を選択したり選択解除したりすることができる。

行選択とセル・フォーカスの違い
選択された行とフォーカスのあるセル(の行)は必ずしも一致するとは限らない。
  1行1列目にフォーカスが設定されている。このフォーカスのあるセルに対してキーボード入力を行うことができる(行番号と列番号は0番から開始)。
  3行目が選択されている。キーボード入力は選択された行ではなく、フォーカスのあるのセルに対して行われる。

 行を選択するにはDataGridクラスのSelectメソッドを使い、選択を解除するにはUnSelectメソッドを使う。特定の行が選択されているかどうか調べるには、パラメータに行番号を指定してIsSelectedメソッドを呼び出せばよい。End of Article

カテゴリ:Windowsフォーム 処理対象:DataGridコントロール
使用ライブラリ:DataGridコントロール
使用ライブラリ:DataGridCell構造体
 
この記事と関連性の高い別の.NET TIPS
DataGridコントロールでクリックされたセルの位置を取得するには?
DataGridコントロールを行選択モードにするには?
[ASP.NET]DataGridコントロールのヘッダーを複数行にするには?
DataGridViewコントロールで行番号を表示するには?
VS.NETのコード・エディタに行番号を表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH