Как я могу поделиться экземпляром пользовательского элемента управления между классами? - PullRequest
0 голосов
/ 23 февраля 2019

Прежде всего, я не очень разбираюсь в этом, поэтому прошу прощения и, пожалуйста, потерпите меня.

Допустим, у меня есть пользовательский элемент управления в форме на экране дизайна.Это экземпляр сам по себе?Если так, как я могу легко разделить этот экземпляр между классами?

В настоящее время у меня есть одноэлементный класс, что означает, что я делаю дополнительные экземпляры каждого пользовательского элемента управления.Однако когда я вызываю экземпляр пользовательского элемента управления через класс singleton и .Show() или .Visible = true, он не появляется.Отображается только в том случае, если я ссылаюсь на имя пользовательского элемента управления, которое находится в окне свойств проекта (которое, я полагаю, является первым экземпляром).

Кроме того, есть ли у форм собственный экземпляр при загрузке приложения илинужно создать экземпляр?Как они работают с точки зрения реализации по сравнению с пользовательскими элементами управления?

Если вам нужен код, я дам его, но я думаю, что это скорее концептуальный вопрос, который я задаю.Если вы можете предоставить пример кода, который был бы замечательным.

Редактировать:

Класс Singleton:

class Single
{
    public Form1 Form { get; private set; }
    public Menu MenuForm { get; private set; }
    public RandomFacts RandomFactsForm { get; private set; }
    public QuizMenu QuizMenuForm { get; private set; }
    public AskHowManyQuestions AskHowManyQuestionsForm { get; private set; }
    public QuizUC QuizUserControl { get; private set; }
    public QuizSetupUC QuizSetupUserControl { get; private set; }

    private static readonly Form1 _form1 = new Form1();
    private static readonly Menu _menu = new Menu();
    private static readonly RandomFacts _randomFacts = new RandomFacts();
    private static readonly QuizMenu _quizMenu = new QuizMenu();
    private static readonly AskHowManyQuestions _askHowManyQuestions = new AskHowManyQuestions();
    private static readonly QuizUC _quizUC = new QuizUC();
    private static readonly QuizSetupUC _quizSetupUC = new QuizSetupUC();

    private static readonly Single _single = new Single();

    private Single()
    {
        Form = _form1;
        MenuForm = _menu;
        RandomFactsForm = _randomFacts;
        QuizMenuForm = _quizMenu;
        AskHowManyQuestionsForm = _askHowManyQuestions;
        QuizUserControl = _quizUC;
        QuizSetupUserControl = _quizSetupUC;
    }

    public static Single GetSingle()
    {
        return _single;
    }
}

Попытка загрузить пользовательский элемент управления из формы, в которой он будетотображаться (не работает):

private QuizSetupUC QuizSetupCon; // in scope of class

QuizSetupCon = Single.GetSingle().QuizSetupUserControl;
QuizSetupCon.Show();
QuizSetupCon.Location = new Point(40, 10);

Но это работает (имя пользовательского элемента управления в дизайне формы):

quizSetupUC1.Show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...