Немного фона в моем проекте: Я делаю многоформатное приложение, состоящее из 1 основной формы и 6 дочерних форм, которые можно вызывать из основной формы, но может быть активна только одна дочерняя форма вовремя. Эти дочерние формы имеют определенные части кода, которые я не хочу копировать. Чтобы решить эту проблему, у меня есть код в том же пространстве имен, в котором содержится незаписанный код. Этот файл кода, однако, нуждается в доступе к определенным свойствам текущей активной дочерней формы. Мой поиск сводится к использованию интерфейса для извлечения необходимой информации из активной дочерней формы.Общение между классами
Мой код в настоящее время ищет, как это:
Интерфейс:
public interface Interface1
{
TabControl tabControl_Buizen_
{
get;
}
TabPage tabPage_plus_
{
get;
}
}
Childform:
public partial class Childform : Form, Interface1
{
Interface1 dummy;
public TabControl tabControl_Buizen_
{
get { return this.tabControl_Buizen; }
}
public TabPage tabPage_plus_
{
get { return this.tabPage_plus; }
}
Methods_newTabPage methods = new Methods_newTabPage(dummy);
}
CodeFile:
public class Methods_newTabPage
{
private readonly Interface1 form;
public Methods_newTabPage(Interface1 formInterface)
{
this.form = formInterface;
}
}
Как вы можете видеть, я использую Methods_newTabPage methods = new Methods_newTabPage(dummy);
, чтобы иметь возможность вызывать методы в моем кодовом файле, но файл кода требует передачи интерфейса (который я заполнил как «фиктивный»). Это, однако, вызывает ошибку «Инициализатор поля не может ссылаться на нестатические поля, метод или свойство Childform.dummy».
Как я могу позволить дочерним формам получить доступ к методам в файле кода, а также предоставить кодовому файлу доступ к определенным элементам управления в разных дочерних фигурах?
Я не уверен, если я понимаю, что вы пытаясь достичь, но я думаю, вам может понадобиться шаблон MVC-designpattern: https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller – Natrium
@Natrium для приложений Windows [Model-view -view-model (MVVM)] (https: //en.wikipedia ,org/wiki/Model% E2% 80% 93view% E2% 80% 93viewmodel) более подходит –
Разрушительные подходы (mvc или mvvm, вероятно, вынуждают вас переписать всю вашу программу и, вероятно, не в winforms); вы можете попытаться определить базовый класс/класс управления, внутри которого вы создаете общие методы. Затем вы делаете все дочерние наследуемые из этой базовой формы. – sam