如何在visual studio中制作类似属性窗口的表单?

时间:2012-10-30 21:39:17

标签: c# winforms

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

我现在遇到的问题:

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

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

如果未选择任何节点,form不会消失。

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

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:0)

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

向Form类添加一个静态变量Form frm; 向表类添加静态函数

//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对象

答案 2 :(得分:0)

尝试使用以下代码展示您的表单:

 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();
    }
}