datagridview не существует в текущем контексте c#
Есть загрузка формы
private void Form1_Load(object sender, EventArgs e)
{
Teams team1 = new Teams("Teamname", "TrainerName", "Country");
team1.DisplayInfo();
}
В файле класса Teams есть метод DisplayInfo
public void DisplayInfo()
{
DataTable table = new DataTable();
table.Columns.Add("Team Name", typeof(string));
table.Columns.Add("Trainer", typeof(string));
table.Columns.Add("Country", typeof(string));
table.Rows.Add(TeamName, TeamTrainer, TeamCountry);
dataGridView1.DataSource = table;
}
Выдает ошибку datagridview1 не существует в текущем контексте. Можно ли как-то добавить использование datagridview в другие файлы кроме Form.cs, если да то как? Не нашел толком никакого ответа. Или нужно по-другому описать метод DisplayInfo()? Подскажите как.
Ответы (1 шт):
Способ №1:
Мы создаём отдельный класс, где будет храниться DataGridView, так мы обходим ограничение элементов форм (Приватность) и можем работать с элементом из любого класса, но тогда нужно изменять файл дизайнера Form1, чтобы в форме было видно dataGridView1.
File Form1.cs
using static DataTables;
private void Form1_Load(object sender, EventArgs e)
{
Teams team1 = new Teams("Teamname", "TrainerName", "Country");
team1.DisplayInfo();
}
File Teams.cs
using static DataTables;
public void DisplayInfo()
{
DataTable table = new DataTable();
table.Columns.Add("Team Name", typeof(string));
table.Columns.Add("Trainer", typeof(string));
table.Columns.Add("Country", typeof(string));
table.Rows.Add(TeamName, TeamTrainer, TeamCountry);
dataGridView1.DataSource = table;
}
File DataTables.cs
public static class DataTables
{
public static DataGridView dataGridView1 = new DataGridView();
}
Способ №2:
Теперь DisplayInfo() возвращает DataTable.
File Form1.cs
using static Wrapper;
private void Form1_Load(object sender, EventArgs e)
{
Teams team1 = new Teams("Teamname", "TrainerName", "Country");
dataGridView1.DataSource = team1.DisplayInfo();
}
File Teams.cs
using static Wrapper;
public DataTable DisplayInfo()
{
DataTable table = new DataTable();
table.Columns.Add("Team Name", typeof(string));
table.Columns.Add("Trainer", typeof(string));
table.Columns.Add("Country", typeof(string));
table.Rows.Add(TeamName, TeamTrainer, TeamCountry);
return table;
}