Прежде чем вы переместили его в новый класс, я представляю, что ваш метод выглядел следующим образом ...
public void btnRemoveToDo_Click(object sender, EventArgs e)
{
this.Remove();
}
Когда вы переместили его в новый класс, вы изменили этот код на ...
ToDo todo = new ToDo();
todo.Remove();
Это создает новый экземпляр класса.Чтобы это работало, вы должны использовать существующий экземпляр;this
вот так ...
ToDO todo = (ToDo) this;
todo.Remove();
Хотя это не совсем оптимально, потому что это очень неловкая архитектура.Лучше оставлять методы, которые используют компоненты формы, на самом классе формы.Если вы хотите, чтобы методы обрабатывали данные, извлеките значения из компонентов формы, а затем используйте данные в качестве параметров для методов различных классов.Это скорее комментарий к общей архитектуре программного обеспечения, но он не очень важен для вашей конкретной проблемы.
РЕДАКТИРОВАТЬ
Приведение экземпляра формы (this
) в виде ToDo
экземпляр не будет работать, потому что Form1
не наследуется от ToDo
, как прокомментировано.
Вам лучше переместить метод Remove()
обратно в класс Form1
на данный момент.Мое предложение было бы попытаться узнать немного больше об объектах и объектно-ориентированном программировании (ООП), прежде чем пытаться разбить что-то еще на разные классы.метод класса ToDo
принимает в качестве параметров все, что ему нужно.
public void Remove(ListControl todoList, ListControl doneList)
{
for (int i = 0; i <= (todoList.SelectedItems.Count - 1); i++)
{
doneList.Items.Add(todoList.SelectedItems[i]);
todoList.Items.Remove(todoList.SelectedItems[i]);
}
}
Тогда вам придется сделать так, чтобы ваш другой метод выглядел следующим образом ...
public void btnRemoveToDo_Click(object sender, EventArgs e)
{
ToDo toDo = new ToDo();
toDo.Remove(lstToDo, lstDone);
}