如何动态地创建表格的对象名称
问题描述:
我知道这已经部分覆盖,但我相信这个问题我还没有被完全覆盖:如何动态地创建表格的对象名称
我有一个创建一个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();
}
}
虽然我需要根据"selectedNodeText"
字符串值创建的Form1
许多对象。
例如:如果"selectedNodeText"
为== "Cars"
我想的Form1
对象名称被称为像"Form1ObjectCars"
,如果这是"Dogs"
对象名称将是"Form1ObjectDogs"
。
答
可以使用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"];
+0
对不起,但整个想法是,我可以有一个Form1变量对象名称,但你已经在你的例子中指定了“bar” – user1261072 2012-03-10 14:26:27
答
这听起来像你正在使用相同的形式,而只是希望标题或标题不同的看法。
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();
你想在Form1变量有名称Form1ObjectCars或Form1ObjectDogs?我没有看到任何理由这样做一个私人变量...请告诉我们你想达到什么:) – digEmAll 2012-03-10 14:12:28