0

コンボボックスにインポートしたいテーブルを含むデータセットがあります。つまり、基本的に、各テーブルの各名前をコンボボックスにインポートしたいと思います。

これはWinformアプリケーション用です

これは、各名前を手動で追加しなくても可能でしょうか?

これは、後でデータグリッドにテーブルを表示するためにテーブルを選択できるようにするためです。

4

2 に答える 2

3

TableName&Table(Dictionary<string,DataTable>)のディクショナリを作成し、それをComboBoxのデータソースにバインドします。

使用する

DisplayMember(DataSourceからDisplayMemberを割り当てるため)は、ComboBoxアイテムに表示されるデータソース内のアイテムです。

ValueMemeber(データソースからValueMemberを割り当てるため)は、アイテムの実際の値として使用されるデータソース内のアイテムです。

コード

Dictionary<string, DataTable> dictionary = new Dictionary<string, DataTable>();
foreach (DataTable table in ds.Tables)
{
    dictionary.Add(table.TableName, table);
}

comboBox1.DataSource = new BindingSource(dictionary, null);
comboBox1.DisplayMember = "Key";
comboBox1.ValueMember = "Value"; 

または Linqクエリを使用して作成しますDictionary<string,DataTable>

Dictionary<string, DataTable> dictionary = ds.Tables.Cast<DataTable>().ToDictionary(x => x.TableName, t => t);

comboBox1.DataSource = new BindingSource(dictionary, null);
comboBox1.DisplayMember = "Key";
comboBox1.ValueMember = "Value"; 

ここでDictionaryはデータソースとして使用されます。Dictionary2つのプロパティKey&がありValueます。Key(TableName)はDisplayMemberとして使用され、Value(DataTable)はValueMemberとして使用されます。

コンボボックスSelectedIndexChangedバインドグリッド上DataSource

 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
 {
        dataGridView1.DataSource = comboBox1.SelectedItem;
 }
于 2012-09-23T12:01:05.283 に答える
1

どうですか

mycombobox.ItemSource = mydataset.Tables.Cast<DataTable>().Select(x => x.Name);

次に、ComboBoxの選択されたインデックスが変更されたイベントごとに実行します。

mydatagrid.ItemSource = mydataset.Tables(mycombobox.SelectedIndex);
于 2012-09-23T11:55:18.663 に答える