設定ファイルから設定名とそれぞれの値を順序付けられた辞書に抽出しました。ディクショナリには、ICollectionクラスのキーと値が含まれています。そのデータをバインドして、DataGridViewに表示したいと思います。文字列を配列にコピーしてそれらの配列を表示しようとしましたが、プログラムを実行すると、列が空白になり、バインドされていないように見えました。
また、DataGridViewソースを順序付けられたディクショナリコレクション(キーまたは値)の1つに直接設定しようとしましたが、それでも必要な結果は得られませんでした。列はまだ空白でした。ただし、3番目の列は列名を「長さ」として作成され、ICollection内のエントリーの長さを表示します。しかし、言うまでもなく、長さは必要ありません。エントリ自体が必要です。
この質問に使用しているコードは次のとおりです。フォームを読み込むときに、構成ファイルを読み込むと、m_Settingsというプライベートメンバーにすべてのキーと値のペアがあります。次に、リストを作成し、キーと値を別々に追加します。バインディングソースを「data」に設定した後、プログラムを実行すると、追加した両方の列が両方とも空白になります。
private void Form4_Load(object sender, EventArgs e)
{
loadconfigfile(Properties.Settings.Default.Config);
List<Object> data = new List<Object>();
data.Add(m_Settings.Keys);
data.Add(m_Settings.Values);
bindingSource1.DataSource = data;
dataGridView1.DataSource = bindingSource1;
dataGridView1.Refresh();
}
順序付けられた辞書を取得して、「設定」と「値」というラベルの付いた2つの列にエントリを表示する方法について何かアイデアはありますか?リストはDataGridViewsと互換性のあるデータソースだったと思いますが、今は自分自身を推測し始めています。
どんな助けや指示も大歓迎です!必要に応じて、さらに詳しい情報を提供させていただきます。
ありがとう!
編集:
myStructクラスが実装された改訂コードは次のとおりです。
List<myStruct> list = new List<myStruct>();
for(int index = 0; index < m_Settings.Count; index++)
{
myStruct pair = new myStruct(keys[index], values[index].ToString());
list.Add(pair);
}
public class myStruct
{
private string Key { get; set; }
private string Value { get; set; }
public myStruct(string key, string value)
{
Key = key;
Value = value;
}
}
ただし、バインディングDataDourceをlistに設定すると、DataGridViewに何も表示されず、単に空になります。誰もが理由を知っていますか?