如何在visualstudio中制作类似窗体的属性窗口



我有TreeView对象,当选择treeview的一个node时,我需要form显示在特定位置(node的属性),当选择另一个node时,form会发生变化。当未选择任何节点时,form将消失。Form仅包含ListView对象。我需要一些像visual studio中的属性窗口之类的东西。

我现在遇到的问题:

Form随机出现,在错误的位置,我需要它在另一个form的确定位置显示。

每次鼠标按下事件后,都会出现一个新的form,但我需要只有一个form(或旧的消失-新的出现)

当未选择任何节点时,form不会消失。

我该如何解决这些问题,或者有更好的解决方案?

我认为您正在寻找的是PropertyGrid控件。

http://msdn.microsoft.com/en-us/library/aa302326.aspx

这是一个非常深入和复杂的控制,但可以给出惊人的结果。

尝试以下代码来显示您的表单:

private Form2 f2;    
private void button1_Click(object sender, EventArgs e)
{
if (f2 == null) {
f2 = new Form2();
f2.FormClosed += delegate { f2 = null; };
f2.Show();
}
else {
f2.Activate();
}
}

关于每次鼠标按下事件后,都会出现一个新的窗体,但我需要会有只有一种形式(或旧的消失-新的出现)我的解决方案:

在Form类中添加一个静态变量Form frm;在Form类中添加一个静态函数

//Create new form if not yet created
//Or return instance of opened form which can update by new parameters
public static Form Instance()
{
if (Form.frm = null)
Form.frm = new Form();
return Form.frm;
}

然后只通过这个静态函数创建所有新表单。如果你想打开Form.的不同实例,请为这个静态函数创建重载函数

当然,请记住在关闭表单时处理静态Form.frm对象

最新更新