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

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間