Как динамически создать имя объекта формы - PullRequest
0 голосов
/ 10 марта 2012

Я понимаю, что это было частично покрыто, хотя я полагаю, что проблема, которую я имею, не была полностью покрыта:

У меня есть событие, которое создает объект Form, когда событие происходит:

    private void hostView_AfterSelect(object sender, TreeViewEventArgs e)
    {
        string selectedNodeText = e.Node.Text;
        if (selectedNodeText == "Internal Hosts" || selectedNodeText == "External Hosts")
        {
            // ignore, parent nodes have no corrosponding tab!
        }
        else
        {
            Form1 Form1Object = new Form1(selectedNodeText);
            Form1Object.Show();
        }

    }

Хотя мне нужно создать множество объектов Form1 в зависимости от строкового значения "selectedNodeText".

Например: если бы "selectedNodeText" было == "Cars", я бы хотел, чтобы имя объекта Form1 называлось как-то вроде "Form1ObjectCars", а если бы оно было "Dogs", то имя объекта было бы "Form1ObjectDogs".

Ответы [ 2 ]

0 голосов
/ 10 марта 2012

Звучит так, как будто вы используете одну и ту же форму, но просто хотите по-разному ее озаглавить или подписать.

string caption = string.Format("Form1Object{0}", selectedNodeText);
Form1 Form1Object = new Form1(caption); 
// in the Form's constructor you are doing a this.Text = caption?
Form1Object.Show(); 

Или чтобы не передавать ее в форму:

Form1 Form1Object = new Form1(); 
Form1Object.Text = string.Format("Form1Object{0}", selectedNodeText);
Form1Object.Show(); 
0 голосов
/ 10 марта 2012

Для этого вы можете использовать класс Dictionary<TKey,TValue>, например

//Initialize
Dictionary<string, Form1> forms = new Dictionary<string, Form1>();

//Add objects 
if(selectedNodeText == "foo")
    forms.Add("foo", new Form1("foo"));

if(selectedNodeText == "bar")
    forms.Add("bar", new Form1("bar"));

//Get objects 
Form1 bar = forms["bar"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...