Используйте значение строки для создания нового объекта формы - PullRequest
2 голосов
/ 02 января 2011

У меня есть основная форма, которая запускается, и затем она может перейти к любой другой форме, которую я создал.Но главное, что я написал класс, который я вызываю, который возвращает строку с именем формы, к которой нужно перейти.

В настоящее время у меня нет этой работы, поэтому я перехожу из формы в форму, какэто (статически написанный код ссылки):

this.Hide();
CloudAccess nextForm1 = new CloudAccess(); 
   //Where CloudAccess is the class of the next form.
nextForm1.ShowDialog();

Что я хочу, это примерно так:

FormController pick = new FormController();
   //Where FormController is the Class I create an object of and ask what's next
string next = pick.whereToGo(); //lets say it returns "CloudAccess"
this.Hide();
next nextForm1 = new next(); //next is desired to be the contents of the string
nextForm1.ShowDialog();

Проблема в том, что я не знаю, как использовать возвращенную строкусделать новый объект и использовать его.Я рассматривал темы Invoke и Reflection, подобные этой: Использование строкового значения для создания нового экземпляра Но я новичок в C # и не знаю, как применить это к этому сценарию.

Мысли?Спасибо!

Ответы [ 2 ]

5 голосов
/ 02 января 2011

Вот рабочий код из того, что сказал fejejosco:

string asdf = "CloudAccess";
Type CAType = Type.GetType("namespace." + asdf);
Form nextForm2 = (Form)Activator.CreateInstance(CAType);
nextForm2.ShowDialog();

Спасибо! * * 1004

1 голос
/ 02 января 2011

Получите тип формы: Type.GetType("name.space." + formname), поэтому, если ваш класс name.space.CloudAccessForm, передайте CloudAccessForm в качестве имени формы, и он даст вам тип.Затем вы можете создать его с помощью Activator.CreateInstance(type).Затем приведите его к Form и покажите.

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