当前位置:编程学习 > C#/ASP.NET >>

绝对不可思议的问题,绝对的有难度?


在项目中有一个窗体(MainForm),在这个窗体里面有一个通过数据源拖拽方式生成的一个已绑定数据的DataGridView,其实的某些列是下拉列表类型的,并且也启用了数据绑定(为了将编号显示为关联的描述)。
现在的问题是我通过如下代码执行打开窗体:

MainForm frm = new MainForm();
frm.Show();

然后直接点关闭,会出现如下错误:


但是,如果通过如下代码打开窗体,就没有一

MainForm frm = new MainForm();
frm.ShowDialog();
点问题

请求大侠帮助!!!! --------------------编程问答-------------------- frm.Show();
之后有没有操作这个窗口的代码,或者操作干扰这个窗口运行的共享变量的代码。 --------------------编程问答-------------------- 一般都是先实例化一个窗体的,我也不知道原理,只是能实例化就先实例化。可能你那个写的是动态的,静态不能直接调用 --------------------编程问答-------------------- Show异步开启,你可以关闭触发开启的父页面,ShowDialog则不一样,父页面必须在生命周期里...

你的错误,很有可能是show出来的窗体绑定了非本页面的数据,然后你关闭的时候,首先释放了其数据来源的页面或者类,所以导致了数据绑定源不存在,或者触发了相关数据操作~~ --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 另外在说明一点:
这种情况还带有偶然性,不是每个窗口都是这样的,我是真的搞不明白了。 --------------------编程问答--------------------
引用 1 楼 caozhy 的回复:
frm.Show();
之后有没有操作这个窗口的代码,或者操作干扰这个窗口运行的共享变量的代码。

没有操作这个窗口的代码。 --------------------编程问答-------------------- 代码 贴 完整 --------------------编程问答-------------------- 不知道你是否有什么地方用过Dispose(),这个函数有时就会崩,当然是我们自己的原因,最好用close() --------------------编程问答-------------------- 关闭前 释放一下 --------------------编程问答-------------------- 下拉列表类型的值为空或者找不到。 --------------------编程问答-------------------- 给下拉框列表初始化一个值吧 --------------------编程问答--------------------
引用 8 楼 xuezhe521 的回复:
不知道你是否有什么地方用过Dispose(),这个函数有时就会崩,当然是我们自己的原因,最好用close()

程序中没有调用Dispose() --------------------编程问答--------------------
引用 10 楼 qldsrx 的回复:
下拉列表类型的值为空或者找不到。

但是,如果使用ShowDialog()打开窗体就一切正常。 --------------------编程问答-------------------- 我说下这个窗体的建立过程吧。
1、创建数据集,其中包含一个权限表(用户ID、功能ID)、用户主表(用户ID、姓名)和权限主表(功能ID,功能描述)
2、新建一个窗体(MainForm),从数据源视图拖拽“权限表”到窗体中,生成一个DataGridView;接着修改DataGridView的列类型为DataGridViewComboBoxCell,并设置下拉列表的数据源、DisplayMember和ValueMember。
3、新建一个Form,并添加按钮,在按钮事件里面添加如下代码:

MainForm frm = new MainForm();
frm.Show();

当关闭该窗体是出现上述问题。 --------------------编程问答-------------------- 可能你的系统是X64,据说X64下面有些异常信息不会显示。 --------------------编程问答--------------------
引用 15 楼 qldsrx 的回复:
可能你的系统是X64,据说X64下面有些异常信息不会显示。

系统是32位的win2003 --------------------编程问答-------------------- 产生这个问题的情况我已经找到了,就是按照下面的流程建立的包含DataGridView的窗体,

引用 14 楼 andrew28 的回复:
我说下这个窗体的建立过程吧。
1、创建数据集,其中包含一个权限表(用户ID、功能ID)、用户主表(用户ID、姓名)和权限主表(功能ID,功能描述)
2、新建一个窗体(MainForm),从数据源视图拖拽“权限表”到窗体中,生成一个DataGridView;接着修改DataGridView的列类型为DataGridViewComboBoxCell,并设置下拉列表的数据源……


如果再将DataGridView的AutoSizeColumnMode属性设置为下列属性中的任何一个:
AllCellsExceptHeader
AllCells
DisplayedCellsExceptHeader
DisplayedCells

均会出现该问题。

注:
开发环境:Windows2003、VS2005、SqlServer2005、.NET 2.0 --------------------编程问答--------------------
引用 17 楼 andrew28 的回复:
产生这个问题的情况我已经找到了,就是按照下面的流程建立的包含DataGridView的窗体,

引用 14 楼 andrew28 的回复:我说下这个窗体的建立过程吧。
1、创建数据集,其中包含一个权限表(用户ID、功能ID)、用户主表(用户ID、姓名)和权限主表(功能ID,功能描述)
2、新建一个窗体(MainForm),从数据源视图拖拽“权限表”到窗体中,生成一……

http://www.cnblogs.com/szzhouke/archive/2006/05/29/412415.html
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,