[c#]DataGridView与货币管理器的位置关联的行不能设置为不可见异常处理机制
来源:互联网 发布:顺丰科技java笔试 编辑:程序博客网 时间:2024/06/06 13:21
在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
- [c#]DataGridView与货币管理器的位置关联的行不能设置为不可见异常处理机制
- 与货币管理器的位置关联的行不能设置为不可见异常解决方案
- 与货币管理器的位置关联的行不能设置为不可见
- 章鱼哥出品—VB.NET DataGridView绑定数据源 "与货币管理器的位置关联的行不能设置为不可见" 问题的解决
- New UI-设置view的可见与不可见
- 设置View的可见以及不可见
- C# picturebox 设置为不可见后 引出的问题
- C语言异常处理机制——为您的C程序添加异常处理
- C语言异常处理机制——为您的C程序添加异常处理
- C语言异常处理机制——为您的C程序添加异常处理
- C语言异常处理机制——为您的C程序添加异常处理
- View的可见与不可见
- 设置datagridview的某一列可见与否时,前提是该datagridview所在的容器可见
- dataGridView 与 DataSet 的关联
- 设置DIV为不可见
- EditText设置密码可见不可见的方式
- 设置控件可见与不可见
- VC设置控件可见与不可见
- OpenRisc-39-ORPSoC,or1200的memory hierarchy整体分析
- android 制作9.png图片
- 链表操作
- 日开发出最薄电路板 厚度为保鲜膜5分之一
- Web开发中常见安全缺陷及解决方法
- [c#]DataGridView与货币管理器的位置关联的行不能设置为不可见异常处理机制
- Linux C编程(2) 使用GDB调试入门
- thinkphp 类库
- __attribute__用法
- Torque安装说明
- time convert
- C++数据结构与STL--递归--汉诺塔
- SQL语句大全
- qt5.0 下面转移程序