DataGridViewは.Net Framework 2.0で追加されたGridViewの後継コントロールです。
Javaでいう、JTableに当たる機能を持ちます。
JTableが複雑なのと同じく、このDataGridViewも複雑です。(私には・・・(^.^;; )
でも、実務で一番重要であり、且つ一番使用頻度が高いのもこれらの
コントロールでしょう。てことで、少しずつ勉強していきたいと思います。
マスターしてしまえばいいスキルになるんじゃないかと。
DataGridViewには、連結モードと非連結モードというモードがあります。
(実際には、そのほかにも仮想モードってものもあるみたいですが)
連結モードは、何かの特定のデータソース(DataSource)に紐づき、連動して
処理を行うことができるモードです。よくあるのがデータベースのデータセット
と連結して表示したりすることでしょう。
もう一つの非連結モードというのは、その逆です。つまり、特定のデータソースに
紐付いていない状態ということになります。データを明示的にセットして
表示させるのがこちらですね。お手軽に利用できます。
今回から、しばらくは非連結モードでの勉強をがんばっていきます。
こっちの方が、プロパティの動きとかをサンプルで表現するときに
楽だとおもいますので。
てことで、もっとも基本的っぽいサンプルです。
自分でカラムの名前を決めて、行データをセットしてあげるパターンです。
// vim:set ts=4 sw=4 et ws is nowrap ft=cs: using System; using System.Windows.Forms; namespace Gsf.Samples.DGV{ /// <summary> /// DataGridViewのサンプルクラス(01)です. /// </summary> public class DataGridViewSample01 : BaseForm{ DataGridView _grid; /// <summary> /// コンストラクタ. /// </summary> public DataGridViewSample01() : base("DataGridViewSample01"){ // nop; } /// /// <seealso cref="Gsf.Samples.DataGridView.BaseForm"/> /// protected override void InitializeComponents(){ ////////////////////////////////////////////////////////////////// // // 非連結モードでDataGridViewを使用. // (特定のDataSourceを使用せずにテーブルを構築する) // // 以下は、最も基本的なパターンです。 // セルのタイプは、指定していないのでDataGridViewTextBoxColumnになります。 // _grid = new DataGridView(); _grid.Dock = DockStyle.Fill; // // カラムの幅の設定. // // ここでは、セルのデータの幅のみで調整するように指定.(ヘッダーの文字列長は含めない) // _grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCellsExceptHeader; // // 行の高さの設定. // // ここでは、セルのデータの高さのみで調整するように指定.(ヘッダーの高さは含めない) // _grid.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders; // // セルにフォーカスが移った時点で編集モードになるようにする. // // [デフォルトでは、フォーカスが移った時点では選択状態となっている.] // _grid.EditMode = DataGridViewEditMode.EditOnEnter; // // カラムを設定. // // [注意] 必ず先にColumnCountプロパティを設定しておくこと. // _grid.ColumnCount = 2; _grid.Columns[0].Name = "ID"; _grid.Columns[1].Name = "名前"; // // 行データを設定. // for(int i = 0; i < 10; i++){ string si = i.ToString(); _grid.Rows.Add(new string[]{si, "gsf_zero" + si}); } Controls.Add(_grid); } /// <summary> /// アプリケーションエントリポイント. /// </summary> /// <remarks> /// 本クラスのテスト用にフォームを起動します. /// </remarks> [STAThread] static void Main(){ Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new DataGridViewSample01()); } } }
SwingのJTableと.NETのDataGridViewって何気に結構似た感じだと思うんですよね。
てことは、両方を勉強しながらいけば覚えが早くなるかもって思ってみたり・・・w
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場