问题,如标题所描述:问题场景: vs.net 2005开发环境下:1. 新建三个窗体分别为(Form5(启动窗体), Form6,Form7);2.新建用户控件UserControl2; 3.UserControl2中放置一TreeView控件(包含三节点分别为: 父节点(节点0), 子节点(节点1,节点2),并添加 treeView1_AfterSelect(object sender, TreeViewEventArgs e)事件,代码如下: private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode.Name == "节点1")
{
Form6 f6 = new Form6();
f6.Show();
this.ParentForm.Close();--[color=#FF00FF]实质问题就出现在这个地方
}
if (treeView1.SelectedNode.Name == "节点2")
{
Form7 f7 = new Form7();
f7.Show();
this.ParentForm.Close();--实质问题就出现在这个地方
}
}[/color] 4. 分别在拖放用户控件UserControl2到窗体Form6,Form7;操作演示: 1. 打开Form5窗体,点击Button1按钮打开Form6子窗体,同时隐藏Form5父窗体; button 代码如下: private void button1_Click(object sender, EventArgs e)
{
Form6 f6 = new Form6();
f6.Show();
this.Hide();
this.Visible = false;
} 2. 当我在Form6里面点击了treeview1的父节点(节点0)之后,再点击子节点的时候,报出bug: 有关调用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。************** 异常文本 **************
System.ObjectDisposedException: 无法访问已释放的对象。
对象名:“TreeView”。
在 System.Windows.Forms.Control.CreateHandle()
在 System.Windows.Forms.TreeView.CreateHandle()
在 System.Windows.Forms.Control.get_Handle()
在 System.Windows.Forms.TreeView.TvnSelected(NMTREEVIEW* nmtv)
在 System.Windows.Forms.TreeView.WmNotify(Message& m)
在 System.Windows.Forms.TreeView.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 3. 如果你单是在两个子节点之间点击却不会有这个问题. 很是郁闷, 请问该如何解决??????
{
if (treeView1.SelectedNode.Name == "节点1")
{
Form6 f6 = new Form6();
f6.Show();
this.ParentForm.Close();--[color=#FF00FF]实质问题就出现在这个地方
}
if (treeView1.SelectedNode.Name == "节点2")
{
Form7 f7 = new Form7();
f7.Show();
this.ParentForm.Close();--实质问题就出现在这个地方
}
}[/color] 4. 分别在拖放用户控件UserControl2到窗体Form6,Form7;操作演示: 1. 打开Form5窗体,点击Button1按钮打开Form6子窗体,同时隐藏Form5父窗体; button 代码如下: private void button1_Click(object sender, EventArgs e)
{
Form6 f6 = new Form6();
f6.Show();
this.Hide();
this.Visible = false;
} 2. 当我在Form6里面点击了treeview1的父节点(节点0)之后,再点击子节点的时候,报出bug: 有关调用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。************** 异常文本 **************
System.ObjectDisposedException: 无法访问已释放的对象。
对象名:“TreeView”。
在 System.Windows.Forms.Control.CreateHandle()
在 System.Windows.Forms.TreeView.CreateHandle()
在 System.Windows.Forms.Control.get_Handle()
在 System.Windows.Forms.TreeView.TvnSelected(NMTREEVIEW* nmtv)
在 System.Windows.Forms.TreeView.WmNotify(Message& m)
在 System.Windows.Forms.TreeView.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 3. 如果你单是在两个子节点之间点击却不会有这个问题. 很是郁闷, 请问该如何解决??????
解决方案 »
- menustrip和tabcontrol
- 生成随机数并写入数据库,请各位进来指点一下,哪里的问题?---先谢谢了
- 求助,关于treeview
- 求教:C#语言下txt文本内容导入sql中多个表的方法。
- 100分问题(解决了连前面的100分一起给)
- 急急急这是什么错误!
- InstalledInputLanguages.count在web应用程序里始终为0
- 一个关于DataList的问题,来者有分 请大哥大姐们来帮帮小弟 (在线)
- 各位大侠,我想问一下写一个视频会商的程序怎么解决
- 装不起VS.net,,,想问一下哪里能下载到里面的帮助文档???
- 在服务器上有堆栈问题,而在开发平台不报错误
- 问一个点击按钮显示数据的问题
最开始的那个窗体能关? 我一般是HIDE
{
Form6 f6 = new Form6();
f6.Show();
this.ParentForm.Close();
}
else if (treeView1.SelectedNode.Name == "节点2")
{
Form7 f7 = new Form7();
f7.Show();
this.ParentForm.Close();--实质问题就出现在这个地方
}
如果不加这个else的话,貌似
this.ParentForm.Close();
关闭窗口后,自己也销毁了,下面再去
if (treeView1.SelectedNode.Name == "节点2")
treeView1就访问不到了吧
窗体的父窗体.实际上父窗体(Form5)一直是没有被关闭的(一开始就执行了: this.Hide();this.Visble = false;)的嘛.我的理解是这样的,代码也是这样写的.(程序报出的bug: 是在我点击TreeView的SelectedNode.Name == "节点0";以后再点击其他节点而报出的;)其他如果把点击"节点0"的操作也执行
{FormXXX fXXX = new FormXXX();
fXXX.Show();
this.ParentForm.Close(); }的相关操作就可以避免这个bug.