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

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

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

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

Q&A

1回答

2622閲覧

C# コンボボックス選択後の表示について

Taffy

総合スコア33

C#

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

0グッド

0クリップ

投稿2021/05/08 08:58

開発環境は Visual Studio Express 2017 for Windows Desktop
言語はC#、.NET Framework 4.7.2を使用して Windowsフォームアプリケーションを開発しています。

コンボボックスの選択肢には ID + 名称 等を表形式で表示し
コンボボックスがユーザ操作によって選択された場合は、選択後にIDのみを表示したいです。

現状作成したコンボボックス
イメージ説明

期待する結果 (「3 | ぶどう」を選択した場合)
イメージ説明

コンボボックスの選択肢は、データベースから取得するものとします。
(今回はSQL Server 2016 Expressを使用)

現在コンボボックスを作成するにあたり、以下のコードを書きました。

C#

1 public Form1() 2 { 3 InitializeComponent(); 4 5 string sql = "SELECT [No], " 6 + "+ CONVERT(CHAR(3), [No] + ' ') + '|'" 7 + "+ CONVERT(CHAR(10), [ITEM] + ' ') AS Name2 " 8 + "FROM TestTable"; 9 10 DataTable dtDataTable = new DataTable(); 11 12 using (OleDbConnection connection = new OleDbConnection(@"Provider=SQLOLEDB;Data Source=XXXX\SQLEXPRESS;Initial Catalog=XXX;User Id=XX;Password=XX;")) 13 { 14 try 15 { 16 //SQL Server DB接続 17 OleDbDataAdapter adapter = new OleDbDataAdapter(); 18 adapter.SelectCommand = new OleDbCommand(sql, connection); 19 OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter); 20 connection.Open(); 21 //読込 22 adapter.Fill(dtDataTable); 23 } 24 catch (Exception ex) 25 { 26 ; 27 } 28 } 29 30 comboBox1.DataSource = null; 31 comboBox1.Items.Clear(); 32 comboBox1.DataSource = dtDataTable; 33 comboBox1.DisplayMember = "Name2"; 34 comboBox1.ValueMember = "Name2"; 35 comboBox1.FormatString = ""; 36 comboBox1.FormattingEnabled = false; 37 }

ユーザがコンボボックスの選択をした後、コンボボックス上に"番号のみ"を表示するためには、どのようにしたらよいか教えていただけないでしょうか。

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

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

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

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

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

m.ts10806

2021/05/08 09:42 編集

なぜそうする必要があるのでしょうか。 UI,UXの観点から「何を選択しているか」が分からないのはよろしくないと思うのですけど。 できるかできないかで言うと大抵のことは「できる」のですが、 「それ意味あるの?」というところが気になっています。
Taffy

2021/05/08 09:48

実際のデータは、複数の項目をつなぎ合わせたものを選択肢として出します。 コンボボックスの選択肢として出てくる"イメージ"としては、以下の通りです。 1 | りんご | A1234 | 100mm | 120g | 2 | みかん | B1234 | 110mm | 100g | ・・・ コンボボックスの選択結果には、代表としてNoを表示し、 品名や関連する情報については、別のテキストボックスに表示しますので 何を選択しているのかがわからない状態にはしない予定です。 また、コンボボックスの選択結果は、他のデータを取ってくるのにも利用したいため Noのみの表示としておきたいのです。
hihijiji

2021/05/08 10:04

comboBox1のイベントでcomboBox1.ValueMemberを書き換えたら? UI自体を見直したほうが良いと思うけど…
guest

回答1

0

内容は確認していませんが、こちらが参考になるのではないでしょうか。
【C#】コンボボックスに複数列を表示する

投稿2021/05/08 15:07

YAmaGNZ

総合スコア10258

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問