GiveAndTake Ответов: 1

В .Объем 4.5 формы Windows приложение c#, Как я могу привязать datagridview, чтобы объект, который содержит массив типа int?


Выполняется следующее, Но элементы array [] (в MyObject) не отображаются в элементе управления dataGridView. Отображаются только Checked и Signalname.
Добавление членов в MyObject и сопоставление их с отдельными элементами array[] с помощью методов доступа get и set делает свое дело, но должен быть и лучший способ.
    public partial class Form1 : Form
    {
        MyObject[] myArray;
        
        public Form1()
        {
            InitializeComponent();

            myArray = new MyObject[] 
            {
                new MyObject(true, "Signal one"),
                new MyObject(false, "/Signal two"),
                new MyObject(true, "Signal 3"),
                new MyObject(false, "/Signal 4")
            };
        }

        private void button2_Click(object sender, EventArgs e)
        {
            dataGridView1.DataSource = myArray;
        }
    }

    public class MyObject
    {
        public bool Checked { get; set; }
        public string Signalname { get; set; }
        public int[] array;

        public MyObject(bool Ckd, string Signame)
        {
            Checked = Ckd;
            Signalname = Signame;
            array = new int[2] { 111, 222};
        }
    }
}


Что я уже пробовал:

Добавление членов в MyObject и сопоставление их с отдельными элементами array[] с помощью методов доступа get и set делает свое дело, но должен быть и лучший способ.

1 Ответов

Рейтинг:
5

OriginalGriff

При привязке объекта к базе данных отображаются только свойства, а не Поля, даже если они являются общедоступными. Если вы хотите, чтобы отображались элементы массива, каждый из них должен иметь индивидуальное свойство, которое возвращает определенный элемент - вы не можете привязаться ко всей коллекции, чтобы создать несколько столбцов, потому что коллекция является объектом: все, что будет отображаться, - это имя коллекции, например "System.Int32[]".