トップ回答者
DataGridViewに列(可変数)を追加する方法

質問
-
web上で探してみますと,
DataGridViewTextBoxColumn column1 = new DataGridViewTextBoxColumn(); DataGridViewTextBoxColumn column2 = new DataGridViewTextBoxColumn(); DataGridViewTextBoxColumn column3 = new DataGridViewTextBoxColumn();
というようにして追加できるとの説明がありましたが,これはあらかじめ追加する列の数が分かっているときには使えますがそうでないときはどうしたらよいのかわからないでいます。
Formに張り付けたばかりのデータソースをバインドしていないDatGridView1にComboBox1のアイテムを列名にして列を追加しようとしています。
for(int i = 0; i < conboBox1.Items.count; i++) { //comboBox1.Items[i]を列名にして //列を追加したい }
回答
-
こんな感じでどうでしょうか。
for(int i = 0; i < comboBox1.Items.count; i++) { DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn(); column.HeaderText = comboBox1.Items[i].ToString(); dataGridView.Columns.Add(column); }
参考URLも貼っておきます。
http://dobon.net/vb/dotnet/datagridview/addcolumn.html
なかむら(http://d.hatena.ne.jp/griefworker)- 回答としてマーク nrael 2010年8月5日 21:35
-
もう解決されたようで既にお気づきだと思いますが、N0は
column.DefaultCellStyle.Format = "N0";
と設定できます。
デザイナーでDataGridViewを設定した後、 コンストラクタにあるInitializeComponent()を右クリックして「定義へ移動」をクリックすると、デザイナーで設定したことがコードとして自動生成されていますから、それを参考にするのも勉強になると思います。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク nrael 2010年8月6日 8:17
すべての返信
-
こんな感じで column1 みたいな変数名を使わないで済みます。
あとはわかりますよね?List<DataGridViewCheckBoxColumn> columnList = new List<DataGridViewCheckBoxColumn>();
columnList.Add(new DataGridViewCheckBoxColumn());
columnList.Add(new DataGridViewCheckBoxColumn());
columnList.Add(new DataGridViewCheckBoxColumn());
-
こんな感じでどうでしょうか。
for(int i = 0; i < comboBox1.Items.count; i++) { DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn(); column.HeaderText = comboBox1.Items[i].ToString(); dataGridView.Columns.Add(column); }
参考URLも貼っておきます。
http://dobon.net/vb/dotnet/datagridview/addcolumn.html
なかむら(http://d.hatena.ne.jp/griefworker)- 回答としてマーク nrael 2010年8月5日 21:35
-
anningoさん,なかむらさん,お二人にお礼申します。
>あとはわかりますよね?(anningoさん)
情けないことに,まったくわからないのです。
>こんな感じでどうでしょうか。
どうにか下のようにやってみました。
column.DefaultCellStyle.Format とcolumn.DefaultCellStyle.Alignment で数字の「3けた表示」と「右寄せ」でつまずいています。「3ケタ表示」は,”c”だと先頭に¥マークがついてしまいますので,"###,###,##0"で実現できたのですが,”c”に変わる簡便な表記方法はないのでしょうか。また「右寄せ」はどのように実現するのでしょうか。お教え願います。
private void inSun() { //コンボボックスcbxGroupの各アイテムをヘッダー・班名に int iItem = cbxGroup.Items.Count; for (int i = 0; i < iItem + 1; i++) { DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn(); if (i == 0) { column.HeaderText = ""; column.Width = 66; } else if (i == iItem) { column.HeaderText = "総 計"; column.Width = 80; column.DefaultCellStyle.Format = "###,###,##0"; //column.DefaultCellStyle.Alignment = "MiddleRight"; } else { column.HeaderText = cbxGroup.Items[i].ToString(); column.Width = 72; column.DefaultCellStyle.Format = "###,###,##0"; //column.DefaultCellStyle.Alignment = "MiddleRight"; } HanDatagridView.Columns.Add(column); } //行見出し int r; r = HanDatagridView.Rows.Add(); HanDatagridView[0, r].Value = "予 定 額"; r = HanDatagridView.Rows.Add(); HanDatagridView[0, r].Value = "納 入 額"; r = HanDatagridView.Rows.Add(); HanDatagridView[0, r].Value = "未 納 額"; HanDatagridView.AllowUserToAddRows = false; }
-
column.DefaultCellStyle.Format とcolumn.DefaultCellStyle.Alignment で数字の「3けた表示」と「右寄せ」でつまずいています。「3ケタ表示」は,”c”だと先頭に¥マークがついてしまいますので,"###,###,##0"で実現できたのですが,”c”に変わる簡便な表記方法はないのでしょうか。
整数ですよね。N0 でいいと思います。詳しくは 標準の数値書式指定文字列 をご覧ください。class Program { static void Main(string[] args) { Console.WriteLine(1234567890.ToString("N0")); Console.ReadKey(); } }
ひらぽん http://d.hatena.ne.jp/hilapon/ -
もう解決されたようで既にお気づきだと思いますが、N0は
column.DefaultCellStyle.Format = "N0";
と設定できます。
デザイナーでDataGridViewを設定した後、 コンストラクタにあるInitializeComponent()を右クリックして「定義へ移動」をクリックすると、デザイナーで設定したことがコードとして自動生成されていますから、それを参考にするのも勉強になると思います。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク nrael 2010年8月6日 8:17