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

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

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

GUIの一種であり、データを表の形式でみることが可能です。

C#

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

Q&A

解決済

2回答

3891閲覧

C# DataGridView上のComboBoxの選択肢をソースコード上で変更したい

Taffy

総合スコア33

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

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

0グッド

0クリップ

投稿2019/04/21 06:50

前提・実現したいこと

C#を使用しています。
Form上にDataGridViewを配置し、2行目(Columns[1])をDataGridViewComboBoxColumnnにしました。
DataGridViewのプロパティ画面ではなく、ソースコード上でComboBoxの選択肢(Item)を変更したいです。
実装方法についてご教示いただけないでしょうか?

該当のソースコード

C#

1 BindingSource bs = new BindingSource(); 2 bs.Add(""); 3 bs.Add(""); 4 bs.Add(""); 5 6 DataGridViewComboBoxColumn dgvCombo = (DataGridViewComboBoxColumn)dgConditionEdit.Columns[1]; 7 dgvCombo.DataSource = bs;

試したこと

上記のコードを書きました。

下記のエラーメッセージが発生したため、dgvComboをnewするようにしましたが状況は変わりませんでした。
System.InvalidOperationException: Rows cannot be programmatically added to the DataGridView's rows collection when the control is data-bound.

補足情報(FW/ツールのバージョンなど)

Microsoft Visual Studio Express 2017を使用しています。

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

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

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

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

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

Zuishin

2019/04/21 09:24

方法は色々ありますが、現在のコードとかけ離れたものを書かれても困るでしょう。
退会済みユーザー

退会済みユーザー

2019/04/21 23:30

局所的な質問だけでなく、全体的なやりたいことを書いた方が良いと思うのですが。XY問題のような気がしますので。
Taffy

2019/04/22 11:34

全体的なやりたいことについて補足します。 DataGridViewのプロパティより、DataGridViewComboBoxColumnn列のItemsプロパティを設定すれば選択肢の編集は可能ですが、これをソースコードで実現したいと考えています。 理由は、選択肢が将来にわたって変わる可能性があるため、外部のテキストファイルなどで選択肢を持たせておくことができたらなぁと考えているためです。
Zuishin

2019/04/22 11:50

どういうことですか? Items プロパティを設定すればいいことがわかっているならすればいいのでは?
退会済みユーザー

退会済みユーザー

2019/04/22 12:57

せっかく説明いただいたのですが分かりません。XY問題の X は説明されてないようで、さっぱり分かりません。自分はギブアップです。他の回答者の方の回答をお待ちください。
guest

回答2

0

ここが参考になると思います。

投稿2019/05/07 05:16

k.matsuda

総合スコア293

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

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

Taffy

2019/06/23 12:27

ありがとうございます!今回は、AddRangeで実現することにしました。
guest

0

ベストアンサー

以下の内容で解決できますか?

// (1) DataGridViewComboBoxCell comboboxCell = (DataGridViewComboBoxCell)this.dataGridView1[0, 0]; comboboxCell.Items.Clear(); comboboxCell.Items.AddRange("A", "B", "C"); // (2) DataGridViewComboBoxColumn comboboxColumn = (DataGridViewComboBoxColumn)this.dataGridView1.Columns[1]; comboboxColumn.Items.Clear(); comboboxColumn.Items.AddRange("A","B","C");

投稿2019/05/07 04:49

510vivienne

総合スコア40

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

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

Taffy

2019/06/23 12:26

AddRangeで実現できました!どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問