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 шт):

Автор решения: Yotic

Способ №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;
}
→ Ссылка