[c#]DataGridView与货币管理器的位置关联的行不能设置为不可见异常处理机制
2013-07-26 08:42
204 查看
在DataGridView中,选择行无法隐藏的问题!
当直接用程序中的 DataGridView.SelectRows[0].Visible = false; 程序会报出一个异常!
异常错误如下:System.InvalidOperationException: 与货币管理器的位置关联的行不能设置为不可见。
网上很多解决方法。可是用起来却未必如愿。特别是当用户点击你DataGridView的列标题ColumnHeader(实际上不只是点击,只要按下鼠标)也会出导致出现上面的错误。
我搞了半宿,觉得DataGridView的实现上是有BUG的。而BUG的问题可能就是出在这IsBindingSuspended上(在类BindingManagerBase、CurrencyManager中)。如果你已经调用CurrencyManager.SuspendBinding();则CurrencyManager.IsBindingSuspended=true。这时如果你不会排序戓点击ColumnHeader,无论你如何隐藏行都不会出错。点击后你就会发现又出错了,而且再调用CurrencyManager.SuspendBinding();也是于是无补。我分析的原因是当你点击ColumnHeader的时候CurrencyManager.IsBindingSuspended又进入了“隐藏开启”状态。因此这时CurrencyManager.IsBindingSuspended=ture,而你的程序还是照样出错,这时候CurrencyManager.SuspendBinding();也是摆设。
左试右调找到了以下方法,不多说看代码:(下面的代码尽量)
CurrencyManager cm = (CurrencyManager)BindingContext[dgvr.DataGridView.DataSource];//
cm.SuspendBinding(); //挂起,这行必需有
dgvr.ReadOnly = true;//继续,这行可选,如果你的DataGridView是编辑的就加上吧。
dgvr.Visible = false;
cm.ResumeBinding();//继续,这行必需有
转自:http://hi.baidu.com/superxiaoxin/item/ab0eceb7e3225a97194697b5
当直接用程序中的 DataGridView.SelectRows[0].Visible = false; 程序会报出一个异常!
异常错误如下:System.InvalidOperationException: 与货币管理器的位置关联的行不能设置为不可见。
网上很多解决方法。可是用起来却未必如愿。特别是当用户点击你DataGridView的列标题ColumnHeader(实际上不只是点击,只要按下鼠标)也会出导致出现上面的错误。
我搞了半宿,觉得DataGridView的实现上是有BUG的。而BUG的问题可能就是出在这IsBindingSuspended上(在类BindingManagerBase、CurrencyManager中)。如果你已经调用CurrencyManager.SuspendBinding();则CurrencyManager.IsBindingSuspended=true。这时如果你不会排序戓点击ColumnHeader,无论你如何隐藏行都不会出错。点击后你就会发现又出错了,而且再调用CurrencyManager.SuspendBinding();也是于是无补。我分析的原因是当你点击ColumnHeader的时候CurrencyManager.IsBindingSuspended又进入了“隐藏开启”状态。因此这时CurrencyManager.IsBindingSuspended=ture,而你的程序还是照样出错,这时候CurrencyManager.SuspendBinding();也是摆设。
左试右调找到了以下方法,不多说看代码:(下面的代码尽量)
CurrencyManager cm = (CurrencyManager)BindingContext[dgvr.DataGridView.DataSource];//
cm.SuspendBinding(); //挂起,这行必需有
dgvr.ReadOnly = true;//继续,这行可选,如果你的DataGridView是编辑的就加上吧。
dgvr.Visible = false;
cm.ResumeBinding();//继续,这行必需有
转自:http://hi.baidu.com/superxiaoxin/item/ab0eceb7e3225a97194697b5
相关文章推荐
- 章鱼哥出品—VB.NET DataGridView绑定数据源 "与货币管理器的位置关联的行不能设置为不可见" 问题的解决
- DataGridView 与货币管理器的位置关联的行不能设置为不可见
- 章鱼哥出品—VB.NET DataGridView绑定数据源 "与货币管理器的位置关联的行不能设置为不可见" 问题的解决
- DataGridView 设置行不可见时,与货币管理器的位置关联的行不能设置为不可见
- DataGridView 设置行不可见时,与货币管理器的位置关联的行不能设置为不可见
- 与货币管理器的位置关联的行不能设置为不可见异常解决方案
- 与货币管理器的位置关联的行不能设置为不可见
- C#之设置DataGridView不能够选择多行,只能选择一行...
- C#之设置DataGridView不能够选择多行,只能选择一行...
- C#设置DataGridView控件的标题行的高度并且居中显示
- C# DataGridView 中 DataGridViewComboBoxCell 下拉列表框设置选择事件
- datagridview 设置某列一列不能被编辑
- c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
- 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny"),或者 是通过包含 overrideMode="Deny" 或旧有的 allowOverride="false" 的位置标记明确设置的。
- c#Winform修改datatable的列的操作和一些combox绑定实体类,dataGridview的注意点 弹出确认框 弹出的winform出现的位置 load
- 设置datagridview的某一列可见与否时,前提是该datagridview所在的容器可见
- c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
- c# 动态设置控件位置
- 解决:VB.NET程序中 datagridview 多次绑定出现 的“不能在数据绑定的 DataGridView 控件上设置 ColumnCount
- c# 窗体位置设置