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

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

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

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

C#

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

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

1回答

1178閲覧

propertyGridでドロップダウンで選択したクラスの設定をし、dataGridViewに挿入したい

omikuji-iot

総合スコア46

.NET

.NETとは、主に.NET Frameworkと呼ばれるアプリケーションまたは開発環境を指します。CLR(共通言語ランタイム)を搭載し、入力された言語をCIL(共通中間言語)に変換・実行することが可能です。そのため、C#やPythonなど複数の言語を用いることができます。

C#

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

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

0クリップ

投稿2022/02/14 00:59

[環境]
VisualStudio2019、.NET Framework(C#)

[コントロール]
・dataGridView(TextColumのみ。要素数は固定)
・propertyGrid
・comboBox(設定するクラスを選択)
・Button(押すとプロパティの中身をテキスト列にし、データグリッドへ挿入)

[やりたいこと]
・コンボボックスで設定したい内容を選択します。(例・投手、内野、外野)

・コンボボックスで選択した内容によってプロパティの設定内容が変化します(Integer、String、リスト選択の内容などが変わる)

・ボタンを押すと、選択した内容がテキスト列になりデータグリッドに挿入される。

[分からなかったこと]
コンボボックスで選択した内容ごとにクラスを定義し、propertyGridのSelectedObjectにそれらクラスを読み込ませてを使う方向性を考えました。しかし、その先どのようにすれば良いのか分かりませんでした。

・propertyGridのSelectedObjectから内容を取り出す方法。
・SelectedObjectに不特定のクラスを入れたとき、その中身を取り出せない。

[質問したいこと]
・この方向性で可能でしょうか?
・他の方向性があれば教えていただけないでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

特に問題無いように思います。

ComboBox の Items に登録するクラスを次のように定義します。

C#

1 class ComboBoxItem 2 { 3 public ComboBoxItem(string name, Type type) { 4 Name = name; 5 Type = type; 6 } 7 8 public string Name { get; } 9 public Type Type { get; } 10 11 public override string ToString() { 12 return Name; 13 } 14 }

Pitcher, Infielder, Outfielder クラスがあるとすると、ComboBox には

C#

1comboBox1.Items.Clear(); 2comboBox1.Items.Add(new ComboBoxItem("投手", typeof(Pitcher))); 3comboBox1.Items.Add(new ComboBoxItem("内野手", typeof(Infielder))); 4comboBox1.Items.Add(new ComboBoxItem("外野手", typeof(Outfielder)));

のように登録します。

ComboBox でアイテムを選択したとき、PropertyGrid の SelectedObject に代入するには

C#

1private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e) { 2 ComboBoxItem item = comboBox1.SelectedItem as ComboBoxItem; 3 if (item != null) { 4 propertyGrid1.SelectedObject = Activator.CreateInstance(item.Type); 5 } 6}

取り出すときは

C#

1private void button1_Click(object sender, EventArgs e) { 2 switch (propertyGrid1.SelectedObject) { 3 case Pitcher pitcher: 4 // 投手の処理 5 break; 6 case Infielder infielder: 7 // 内野手の処理 8 break; 9 case Outfielder outfielder: 10 // 外野手の処理 11 break; 12 } 13}

こんな感じになるかと思います。

投稿2022/02/14 03:48

KOZ6.0

総合スコア2626

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

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

omikuji-iot

2022/02/14 22:40

具体的なコードまで示していただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問