0

我有TreeView对象,我需要选择一个时nodetreeviewform明确的位置(属性node)中显示,当另一个node选择另一个时,form更改。当没有节点被选中时,form消失。Form仅包含ListView对象。我需要视觉工作室中的属性窗口之类的东西。

我现在遇到的问题:

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

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

当没有选择节点时,form不会消失。

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

4

3 回答 3

5

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

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

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

于 2012-10-30T21:42:16.693 回答
0

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

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

于 2012-10-31T20:23:46.957 回答
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();
    }
}
于 2012-10-31T20:28:56.863 回答