Top.Mail.Ru
Ответы

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

Код:

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

Аватар пользователя
Мыслитель

Здравствуйте, используйте объект экземпляра для доступа к элементам формы, в данном случае

1
 Form1.panel1.Controls["UCInfo"].Invoke((MethodInvoker)(delegate  
1
 {  
1
     ((DataGridView)Form1.panel1.Controls["UCInfo"].Controls["guna2DataGridView1"]).Rows.Add(item);  
1
 })); 

Не могу вставить код, вот тогда так:

Form1.panel1.Controls["UCInfo"].Invoke((MethodInvoker)(delegate
{
((DataGridView)Form1.panel1.Controls["UCInfo"].Controls["guna2DataGridView1"]).Rows.Add(item);
}));

Удачного вам дня, Герман Абдуловерный!