updateGrid
не имеет Form
метода, но ваш производный класс делает. Вам нужно передать родителя в свой класс: MyForm updateGrid () = (MyForm) this.Parent;
Сам вопрос звучит немного nooby. Чтобы вызвать нестационарный метод из другого класса, вы должны использовать текущий экземпляр класса. Я попытался получить экземпляр класса с помощью метода, который я хочу вызвать во второй класс. Я думаю, что мне удалось, но он пока не работает.
Это один из способов, как я попытался привести экземпляр к второму классу:
arbeitsbearbeitung arbeitenbearbeitung = new arbeitsbearbeitung(arbeit);
arbeitenbearbeitung.Parent = this;
arbeitenbearbeitung.Show();
(из класса 1)
И вот где я использовал его в классе 2:
Form frm = (Form)this.Parent;
frm.updateGrid();
Я также пробовал его разными способами, например, передавать его в качестве параметра; тот же результат ...
Это updateGrid()
в классе 1:
public void updateGrid()
{
klassenarbeitenTableAdapter.Fill(this.database1DataSet.Klassenarbeiten);
}
Он сообщает мне, что updateGrid не содержит определения Form
.
Я, должно быть, тупой, но я не могу найти свою ошибку.
Мышление и поиск в Интернете в течение 2 часов и до сих пор нет подсказки.
Теперь я чувствую себя немой. Спасибо за помощь!
вы должны использовать текущий экземпляр класса
Вы должны использовать в экземпляр класса. Не обязательно текущий.
Я попытался получить экземпляр класса
Существует не экземпляр (если это не одноэлементно), есть экземпляр.
Затем Microsoft реализована updateGrid()
как часть платформы .NET. Form
Класс Microsoft не имеет метода.arbeitsbearbeitung frm = (arbeitsbearbeitung) this.Parent; frm.updateGrid();
Если вы создали FRM, то , что форма наследует от и вы добавили метод . Поэтому вместо того, чтобы бросать , примените его к вашему классу.Form frm = (Form)this.Parent;
Form
updateGrid
Таким образом, код может читать
frm.updateGrid()
Обратите внимание, что это не чистый код, так как он нарушает принцип замены Лискова . Но я думаю, что это не ваша главная забота на данный момент.
Вы объявляете frm
равным Form
:
Form
Проблема в том, что Form
класс не имеет функции Form
. Когда вы говорите updateGrid
, компилятор думает «ОК, frm
есть Form
, но Form
не имеет ничего, что называется Form
». Он не знает, что updateGrid
это будет ваш специальный подкласс Form
с frm
определенной функцией.
Вместо этого вам нужно объявить frm
с фактическим классом класса 1:
MyCustomForm frm = (MyCustomForm)this.Parent;
Затем, когда вы это сделаете frm.updateGrid()
, компилятор узнает, о чем вы говорите.