Как исправить код?
Код:
public static void Read(Client client, object[] objects)
{
DataGridViewRow item = new DataGridViewRow();
item.Cells.Add(new DataGridViewTextBoxCell() { Value = client.IP });
item.Cells.Add(new DataGridViewTextBoxCell() { Value = (string)objects[1] });
item.Cells.Add(new DataGridViewTextBoxCell() { Value = (string)objects[2] });
item.Cells.Add(new DataGridViewTextBoxCell() { Value = (string)objects[3] });
item.Cells.Add(new DataGridViewTextBoxCell() { Value = (string)objects[4] });
item.Cells.Add(new DataGridViewTextBoxCell() { Value = (string)objects[5] });
item.Cells.Add(new DataGridViewTextBoxCell() { Value = (string)objects[6] });
item.Cells.Add(new DataGridViewTextBoxCell() { Value = (string)objects[7] });
item.Tag = client;
client.Tag = item;
Form1.panel1.Controls["UCInfo"].Invoke((MethodInvoker)(delegate
{
Form1.panel1.Controls["UCInfo"].guna2DataGridView1.Rows.Add(item);
}));
}
Ошибка заключается в том, что у меня на форме есть panel, на которой есть UserControl под названием UCInfo и на нем есть DataGridView, в который мне нужно добавить столбцы.
Ошибка: Для нестатического поля, метода или свойства "Form1.panel1" требуется ссылка на объект.
public static void Read(Form1 form, Client client, object[] objects)
{
DataGridViewRow item = new DataGridViewRow();
item.Cells.Add(new DataGridViewTextBoxCell() { Value = client.IP });
item.Cells.Add(new DataGridViewTextBoxCell() { Value = (string)objects[1] });
item.Cells.Add(new DataGridViewTextBoxCell() { Value = (string)objects[2] });
item.Cells.Add(new DataGridViewTextBoxCell() { Value = (string)objects[3] });
item.Cells.Add(new DataGridViewTextBoxCell() { Value = (string)objects[4] });
item.Cells.Add(new DataGridViewTextBoxCell() { Value = (string)objects[5] });
item.Cells.Add(new DataGridViewTextBoxCell() { Value = (string)objects[6] });
item.Cells.Add(new DataGridViewTextBoxCell() { Value = (string)objects[7] });
item.Tag = client;
client.Tag = item;
form.panel1.Controls["UCInfo"].Invoke((MethodInvoker)(delegate
{
((UCInfo)form.panel1.Controls["UCInfo"]).guna2DataGridView1.Rows.Add(item);
}));
}
Здравствуйте, используйте объект экземпляра для доступа к элементам формы, в данном случае
Form1.panel1.Controls["UCInfo"].Invoke((MethodInvoker)(delegate
{
((DataGridView)Form1.panel1.Controls["UCInfo"].Controls["guna2DataGridView1"]).Rows.Add(item);
}));
Не могу вставить код, вот тогда так:
Form1.panel1.Controls["UCInfo"].Invoke((MethodInvoker)(delegate
{
((DataGridView)Form1.panel1.Controls["UCInfo"].Controls["guna2DataGridView1"]).Rows.Add(item);
}));
Удачного вам дня, Герман Абдуловерный!