Как использовать пользовательский конструктор в WinForm? - PullRequest
6 голосов
/ 16 августа 2010

Мне нужно создать экземпляр Winform в другом проекте. Как это сделать? В настоящее время я пытаюсь связать конструктор по умолчанию. Кажется, мой пользовательский конструктор не называется.

Также ... точкой входа для этого приложения не будет проект, которому принадлежит эта форма. Это означает, что следующее не будет работать:

 Application.EnableVisualStyles();
 Application.SetCompatibleTextRenderingDefault(false);
 Application.Run(new HtmlTestForm());

Я не совсем уверен, что делает этот код. Будет ли форма функционировать?

private HtmlTestForm()
        {
            InitializeComponent();
            OpenBrowser(new Uri(TestURL));
        }

 public HtmlTestForm(Uri uri)
            :this()
        {
            TestURL = uri;
        }

// Новая форма в другом проекте.

HtmlTestForm form = new HtmlTestForm(new Uri("http://SomeUri.html"));

1 Ответ

8 голосов
/ 16 августа 2010

Форма будет работать.
Однако TestURL будет назначен только после вызова OpenBrowser. (: this() сначала выполнит весь конструктор по умолчанию)

Вместо этого вам, вероятно, следует вызывать InitializeComponent отдельно в вашем пользовательском конструкторе, а не цепочку по умолчанию.

.Net классы форм - это обычные классы, которые содержат автоматически сгенерированный метод с именем InitializeComponent.
У них нет никакой магии , о которой вам нужно знать (в отличие от VB6); если вы понимаете цель InitializeComponent (прочитайте ее источник), вы можете делать с ними все, что захотите.

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