Visual Studio Windows フォームアプリ標準の DataGridViewでは実現できない、1行複数段レイアウトのグリッド画面サンプルを、GcMultiRowで作成しました。
チェックボックス列は1行2段、テキストボックス列とボタン列は1行1段で上下に並べています。
ソースコードは GitHub で公開しています。
開発環境
Visual Studio 2022 で .NET 7.0の「Windows フォームアプリ」プロジェクトを作成。
GrapeCity.Win.MultiRow Nugetパッケージをインストール。
ツールボックスの「GcMultiRow」をクリックし、フォームに GcMultiRowを追加。
主な処理
画面表示時に 1行2段レイアウトのグリッドを実装しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
private void Form1_Load(object sender, EventArgs e) { var template = new Template(); template.Width = 500; #region ColumnHeader Layout var header = new ColumnHeaderSection(); header.Height = 40; header.Cells.AddRange(new[] { new ColumnHeaderCell() { Value = "CheckBox Culoumn", Location = new Point(0, 0), Size = new Size(200, 40), Style = new CellStyle() { TextAlign = MultiRowContentAlignment.MiddleCenter, Multiline = MultiRowTriState.False, Font = this.Font, Border = new Border(LineStyle.Dotted, Color.Black) } }, new ColumnHeaderCell() { Value = "TextBox Culoumn", Location = new Point(200, 0), Size = new Size(200, 20), Style = new CellStyle() { TextAlign = MultiRowContentAlignment.MiddleCenter, Multiline = MultiRowTriState.False, Font = this.Font, } }, new ColumnHeaderCell() { Value = "Button Culoumn", Location = new Point(200, 20), Size = new Size(200, 20), Style = new CellStyle() { TextAlign = MultiRowContentAlignment.MiddleCenter, Multiline = MultiRowTriState.False, Font = this.Font, Border = new Border(LineStyle.Thin, Color.Black) } } }); template.ColumnHeaders.Add(header); #endregion #region Row Cell Layout template.Row.Height = 40; template.Row.Cells.AddRange(new Cell[] { new CheckBoxCell { Location = new Point(0, 0), Size = new Size(200, 40), Value = false }, new TextBoxCell { Location = new Point(200, 0), Size = new Size(200, 20), Value = "Default Value" }, new ButtonCell { Location = new Point(200, 20), Size = new Size(200, 20), Value = "Button" } }); #endregion GcMultiRow1.Template = template; } |
GcMultiRowのクリックイベントで、GcMultiRow上のボタンがクリックされたら、ボタンの行列位置Index値と、同じ行のテキストボックスに入力された値をメッセージボックスで表示しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
private void GcMultiRow1_CellClick(object sender, CellEventArgs e) { try { if (e.CellIndex != GcMultiRow1_CuloumnIndex_2) return; //クリック処理対象外のセルがクリックされた場合はスキップ //以降はボタンクリック時の処理 MessageBox.Show($"Button row no={e.RowIndex} Button column no={e.CellIndex} TextBox cell value={GcMultiRow1[e.RowIndex, GcMultiRow1_CuloumnIndex_1].Value}"); } catch (Exception ex) { //エラーログ出力 //エラーメッセージ表示 } } |
関連記事
GrapeCity.Win.MultiRow GcMultiRow for Windows Forms 11 よく使う機能
コメント