質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

3回答

5092閲覧

WinForm の dataGridView に動的に作成したボタンテキストを行ごとに変更したい

byori

総合スコア71

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2020/07/21 06:46

WinForm アプリの dataGridView に動的にボタンを張り付けそのボタンテキストを1行ごとに任意で設定したいのですが、
どのようにしたらできますか?

C#

1 DataTable dt = new DataTable(); 2 DataColumn column; 3 DataRow row; 4 5 for (int k = 0; k < table.Length; ++k) 6 { 7 column = new DataColumn(); 8 column.DataType = Type.GetType(attrib); 9 column.ColumnName = table[k]; 10 dt.Columns.Add(column); 11 } 12 13 for (int k = 0; k < itak.Count; ++k) 14 { 15 row = dt.NewRow(); 16 17 row[0] = itak[k].id; 18 row[1] = itak[k].Kind; 19 row[2] = itak[k].Hyohon; 20 21 22 dt.Rows.Add(row); 23 } 24 dataGridView1.DataSource = dt; 25 26 // 修正ボタン追加 27 DataGridViewButtonColumn column3 = new DataGridViewButtonColumn(); 28 //列の名前を設定 29 column3.Name = "修正"; 30 //全てのボタンに"修正"と表示する 31 column3.UseColumnTextForButtonValue = true; 32 column3.Text = "修正"; 33 column3.Width = 60; 34 column3.DefaultCellStyle.Font = new Font(dataGridView1.Font.FontFamily, 8, FontStyle.Regular); 35 //DataGridViewに追加する 36 dataGridView1.Columns.Add(column3); 37 38 // 修正ボタンを itak[i].Itaku の値で 〇 / × に変える 39 for(int i=0; i < itak.Count; ++i) 40 { 41 if (itak[i].Itaku == true) 42 dataGridView1[9, i].Value = "〇"; 43 else 44 dataGridView1[9, i].Value = "×"; 45 }

dataGridView1[9, i].Value = "〇"; では無理だろうって思いましたが・・・(^_^)

上記のコードでは、列に一括でセットしていますが、1行ごとにループでぶん回す方法などありますでしょうか?
また、ほかの方法でも?ありますか?

Windows10 VS2015 C#

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

セル単位で設定するならこんな感じです。

C#

1 //ボタンのStyleを作成(Style設定しないなら省略可) 2 var style = new DataGridViewCellStyle(); 3 style.Alignment = DataGridViewContentAlignment.MiddleCenter; //中央揃え 4 5 //個別にボタンセルとテキストを設定 6 for (var y = 0; y < 10; y++) 7 { 8 var button = new DataGridViewButtonCell(); 9 button.Style = style; 10 dataGridView1[0, y] = button; 11 dataGridView1[0, y].Value = "テスト" + y; 12 }

投稿2020/07/21 08:20

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

byori

2020/07/21 22:42

お世話になります。 > var button = new DataGridViewButtonCell(); で、作成後のボタンを取得できるのですね。 ボタンテキストを変更することができました。 ありがとうございます。
guest

0

(dataGridView1.Columns[なんたら] as DataGridViewButtonColumn).Text = "うんちゃら";

でどでしょ

投稿2020/07/21 07:18

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2020/07/21 07:47

列一括な上に、提示ソースに column3.Text = "修正"; って書いてありますよ。
guest

0

DataGridViewButtonColumn.UseColumnTextForButtonValueプロパティ
DataGridViewButtonCell.UseColumnTextForButtonValueプロパティ
を参照してください。

また、対象行の他の列の値によって文字を変更したいというのであればDataGridView.CellFormattingイベントを利用されてはどうでしょうか。

投稿2020/07/21 07:11

編集2020/07/21 07:33
YAmaGNZ

総合スコア10258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問