Usar una lista como fuente de datos para DataGridView

Extraje los nombres de las configuraciones y sus valores respectivos de un archivo de configuración en un diccionario ordenado. El diccionario contiene claves y valores que son de la clase ICollection. Quiero vincular esos datos y mostrarlos en un DataGridView. Intenté copiar las cadenas en las matrices y mostrar esas matrices, pero cuando ejecuté el progtwig, las columnas estaban en blanco y no parecían estar vinculadas en absoluto.

También intenté establecer el origen de DataGridView directamente en una de las colecciones ordenadas del diccionario (claves o valores), pero eso tampoco dio como resultado lo que quería; las columnas aún estaban en blanco. Sin embargo, se realiza una tercera columna con el nombre de la columna como “longitud” y muestra las longitudes de las entradas en ICollection. Pero no hace falta decir que no quiero las longitudes, quiero las entradas en sí mismas.

Aquí está el código que estoy usando para esta pregunta: al cargar el formulario, cargo el archivo de configuración y un miembro privado llamado m_Settings tiene todos los pares clave-valor. Luego creo una lista y agrego las claves y los valores por separado. Después de configurar la fuente de enlace a ‘datos’, ejecuto el progtwig y las dos columnas que agregué están en blanco.

private void Form4_Load(object sender, EventArgs e) { loadconfigfile(Properties.Settings.Default.Config); List data = new List(); data.Add(m_Settings.Keys); data.Add(m_Settings.Values); bindingSource1.DataSource = data; dataGridView1.DataSource = bindingSource1; dataGridView1.Refresh(); } 

¿Alguna idea sobre cómo podría obtener el diccionario ordenado y mostrar las entradas en dos columnas con la etiqueta “Configuración” y “Valores”? Creo que las listas eran DataSources compatibles para DataGridViews, pero ahora estoy comenzando a cuestionarme a mí mismo.

¡Cualquier ayuda o dirección es muy apreciada! Estaré encantado de proporcionar más información si es necesario.

¡Gracias!

EDITAR :

Aquí está el código revisado con la clase myStruct implementada:

  List list = new List(); 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; } } 

Sin embargo, cuando configuro el DataDource vinculante para listar, nada aparece en DataGridView, simplemente está vacío. Alguien sabe por qué?

En primer lugar, no entiendo por qué está agregando todas las claves y los valores cuentan veces, el índice nunca se usa.

Intenté este ejemplo:

  var source = new BindingSource(); List list = new List { new MyStruct("fff", "b"), new MyStruct("c","d") }; source.DataSource = list; grid.DataSource = source; 

y eso funciona bastante bien, obtengo dos columnas con los nombres correctos. El tipo de MyStruct expone las propiedades que el mecanismo de enlace puede usar.

  class MyStruct { public string Name { get; set; } public string Adres { get; set; } public MyStruct(string name, string adress) { Name = name; Adres = adress; } } 

Intente crear un tipo que tenga una clave y valor, y agréguelo uno por uno. Espero que esto ayude.

Establezca la propiedad DataGridView

  gridView1.AutoGenerateColumns = true; 

Y asegúrese de que la lista de objetos que está vinculando, esas propiedades del objeto deben ser públicas.

este Func puede ayudarte. agrega todos los objetos de la lista a la vista de cuadrícula

 private void show_data() { BindingSource Source = new BindingSource(); for (int i = 0; i < CC.Contects.Count; i++) { Source.Add(CC.Contects.ElementAt(i)); }; Data_View.DataSource = Source; } 

Escribo esto para la aplicación de base de datos simple