Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как исправить код?

ac3ss0r Ученик (203), на голосовании 6 месяцев назад
Код:
  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" требуется ссылка на объект.
Голосование за лучший ответ
Сергей Астахов Профи (861) 7 месяцев назад
Здравствуйте, используйте объект экземпляра для доступа к элементам формы, в данном случае

 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);
}));

Удачного вам дня, Герман Абдуловерный!
ac3ss0rУченик (203) 7 месяцев назад
Все также ошибка Для нестатического поля, метода или свойства "Form1.panel1" требуется ссылка на объект.
Сергей Астахов Профи (861) Герман Абдуловерный, а так?: public static void Read(Client client, object[] objects, Form1 form) { form.panel1.Controls["UCInfo"].Invoke((MethodInvoker)(delegate { ((DataGridView)form.panel1.Controls["UCInfo"].Controls["guna2DataGridView1"]).Rows.Add(item); })); }
Сергей АстаховПрофи (861) 7 месяцев назад
*Выше удалено*
Кольт Бравл старс Ученик (152) 7 месяцев назад
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);
}));
}
Похожие вопросы