2010-05-04 4 views
0

Camarades,Создание нового экземпляра окна по строке Тип

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

Я думаю в собственности " AcessibleName "в MenuItem, введите имя класса, который я хочу. Затем щелкнуть по каждому пункту, система выполняет следующей верификацию

private void mnMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) 
    { 
     try 
     { 
      if (!String.IsNullOrEmpty(((MenuStrip)sender).AccessibleName)) 
      { 
       string[] _Parametros = ((MenuStrip)sender).AccessibleName.Split(uConstantes.CtSeparadorMenu); 
       uMenu.CreateWindow(((MenuStrip)sender).AccessibleName, _Parametros); 
      } 
     } 
     catch (uException __Excp) 
     { 
      throw __Excp; 
     } 
    } 

uMenu.CreateWindow и в классе, я получил бы параметры и создавать новый объект, и отобразить его. Кто-нибудь есть идеи? Отражение решает эту проблему? (К сожалению, я много об отражении не знаю)

Благодаря

ответ

2

Я хотел бы посмотреть на метод Activator.CreateInstance делать конкретно, что вы просите.

Однако я склонен спросить, если это необходимо (на основе предоставленной вами информации). Предположим, что у вас есть меню, содержащее 3 элемента. Когда пользователь нажимает на MenuItem1, они представлены Form1. Аналогично, MenuItem2-> Form2 и MenuItem3-> Form3. Почему бы вам просто не запустить формы напрямую? Какая польза от этого?

+0

Camarade, Это правило не распространяется на всех и, согласно моим правилам программирования, обычно помещает конкретные имена и имеет тенденцию варьироваться в зависимости от случая. Ответил на ваш вопрос? Я попытаюсь реализовать это решение. Спасибо –

+0

@ Ph.E: Я предполагаю, что мой вопрос был больше по строкам, всегда ли так, что нажатие на MenuItem1 должно отображать Form1? Если да, почему бы просто не сказать 'new Form1()' в обработчике кликов для MenuItem1? –

+0

@Jacob G: Почему существует ряд настроек, которые будут переданы в виде массива. Если я использую событие OnClick, это будет очень загрязнять код, оставив его очень сегментированным. –

0

На самом деле, я делал что-то неправильно. Мне нужно указать имя окна, включая его полный путь (пространство имен). Затем команда будет работать, и тип будет идентифицирован.

Спасибо всем.

Смежные вопросы