回答編集履歴

2

追記

2020/05/27 02:16

投稿

退会済みユーザー
test CHANGED
@@ -17,3 +17,179 @@
17
17
 
18
18
 
19
19
  上の記事は DataGridView の DataGridViewComboBoxColumn が対象ですが、普通の ComboBox でも同様にその DataSource プロパティを DataTable に、DisplayMember, ValueMember プロパティを DataTable の列名に設定することで可能だと思います。記事のコードを参考にしてください。
20
+
21
+
22
+
23
+ **【追記】**
24
+
25
+
26
+
27
+ 下のコメント欄で、
28
+
29
+
30
+
31
+ > 「連結した結果」を ComboBox の DispalyMember に設定して表示するサンプルを回答欄に追記しておきます。
32
+
33
+
34
+
35
+ と書きましたが、それを以下に追記しておきます。
36
+
37
+
38
+
39
+ 先にも書きましたが、以下の記事のステップ 17 ~ の応用です。
40
+
41
+
42
+
43
+ DataGridView に ComboBox を表示
44
+
45
+ [http://surferonwww.info/BlogEngine/post/2014/01/23/how-to-show-combobox-column-in-datagridview.aspx](http://surferonwww.info/BlogEngine/post/2014/01/23/how-to-show-combobox-column-in-datagridview.aspx)
46
+
47
+
48
+
49
+ 上の記事で使っている Northwind サンプルデータベースの Suppliers テーブルは以下のようになっています。
50
+
51
+
52
+
53
+ ![イメージ説明](1b8c143e41f6155862c549a9c63b8177.jpeg)
54
+
55
+
56
+
57
+ この SupplierID, CompanyName, ContactName フィールドを空間文字をはさんで連結して Name という名前で取得し、SupplierID と Name で DataTable を生成し、ComboBox の DataSource に設定します。そして ValueMember を "SupplierID" に、DisplayMember を "Name" に設定すれば完了です。
58
+
59
+
60
+
61
+ コードは以下の通り。
62
+
63
+
64
+
65
+ ```
66
+
67
+ using System;
68
+
69
+ using System.Collections.Generic;
70
+
71
+ using System.ComponentModel;
72
+
73
+ using System.Data;
74
+
75
+ using System.Drawing;
76
+
77
+ using System.Linq;
78
+
79
+ using System.Text;
80
+
81
+ using System.Threading.Tasks;
82
+
83
+ using System.Windows.Forms;
84
+
85
+ using System.Data.SqlClient;
86
+
87
+
88
+
89
+ namespace WinFormsApp1
90
+
91
+ {
92
+
93
+ public partial class Form5 : Form
94
+
95
+ {
96
+
97
+ public Form5()
98
+
99
+ {
100
+
101
+ InitializeComponent();
102
+
103
+
104
+
105
+ this.comboBox1.DataSource = CreateSuppliersTable();
106
+
107
+ this.comboBox1.ValueMember = "SupplierID";
108
+
109
+ this.comboBox1.DisplayMember = "Name";
110
+
111
+ }
112
+
113
+
114
+
115
+ // Suppliers テーブルから DataTable を作るためのヘルパーメソッド
116
+
117
+ private DataTable CreateSuppliersTable()
118
+
119
+ {
120
+
121
+ DataTable table = new DataTable("Suppliers");
122
+
123
+ table.Columns.Add(new DataColumn("SupplierID", typeof(int)));
124
+
125
+ table.Columns.Add(new DataColumn("Name", typeof(string)));
126
+
127
+
128
+
129
+ string connString = WinFormsApp1.Properties.Settings.Default.NORTHWNDConnectionString;
130
+
131
+ string query = "SELECT [SupplierID], " +
132
+
133
+ "CONVERT(nvarchar,[SupplierID]) + ' ' + [CompanyName] + ' ' + [ContactName] AS Name " +
134
+
135
+ "FROM[NORTHWIND].[dbo].[Suppliers]";
136
+
137
+
138
+
139
+ using (SqlConnection conn = new SqlConnection(connString))
140
+
141
+ {
142
+
143
+ conn.Open();
144
+
145
+ using (SqlCommand cmd = new SqlCommand(query, conn))
146
+
147
+ {
148
+
149
+ using (SqlDataReader reader = cmd.ExecuteReader())
150
+
151
+ {
152
+
153
+ if (reader != null)
154
+
155
+ {
156
+
157
+ while (reader.Read())
158
+
159
+ {
160
+
161
+ DataRow row = table.NewRow();
162
+
163
+ row["SupplierID"] = reader.GetInt32(0);
164
+
165
+ row["Name"] = reader.GetString(1);
166
+
167
+ table.Rows.Add(row);
168
+
169
+ }
170
+
171
+ }
172
+
173
+ }
174
+
175
+ }
176
+
177
+ }
178
+
179
+ return table;
180
+
181
+ }
182
+
183
+ }
184
+
185
+ }
186
+
187
+ ```
188
+
189
+
190
+
191
+ 実行結果は以下の通り。
192
+
193
+
194
+
195
+ ![イメージ説明](db16da73427179ba478b48859c219ce3.jpeg)

1

追記

2020/05/27 02:16

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,11 @@
1
+ ログインとかの話はちょっと置いといて・・・
2
+
3
+
4
+
5
+ > DBのデータをComboBoxへの格納の仕方がわかりません。
6
+
7
+
8
+
1
9
  以下の記事のステップ 17 ~ の応用でできると思います。
2
10
 
3
11