我有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对象