c# - DataGridView 是否记住引用?
问题描述
我使用 System.Windows.Forms。没有数据绑定的DataGridView控件。
以下代码可以正常工作。我创建一个列表,添加一个元素并将其分配给 DGV。当前单元格不会为空 - 完美!
List<string> list = new List<string>(); // create an empty list
list.Add("test"); // adding a new item to the list
dataGridView.DataSource = list; // assign list as datasource
var cell = dataGridView.CurrentCell; // cell is not null -> that's expected and OK
现在的问题。当我首先将一个空列表分配给 DGV 时,它会以某种方式记住列表的引用,尽管当我之前将其重置为 null 时......为什么?
List<string> list = new List<string>(); // create an empty list
dataGridView.DataSource = list; // assign list as datasource BEFORE ADDING element
dataGridView.DataSource = null; // assign null to reset
list.Add("test"); // adding a new item to the list
dataGridView.DataSource = list; // assign list again as datasource
var cell = dataGridView.CurrentCell; // cell is null, but it SHOULD NOT BE
为什么 DGV 没有设置 CurrentCell?它是否以某种方式记住了列表并且它是空的?
感谢任何答案。
-爵士
解决方案
我可以看到数据源保存了引用。因此,如果您将数据源设置为 null,则列表也为 null。
推荐阅读
- android - 由 android.database.CursorWindowAllocationException 引起
- c# - 如何使用 gmail api 获取带有消息详细信息的参考和回复
- .net-core - 下载多个文件 (50mb) blazor 服务器端
- c# - 通过 SQLite 在 VSTO 中使用本地数据库
- flutter - 已关闭 - 是否可以在不到 1 秒的时间内制作 nextPage() 动画?
- reactjs - reactjs flatlist 降序和升序不适用于下拉菜单
- google-smart-home - 恒温器触摸控制可用于一项操作,但不能用于另一项操作
- linux - 在第一次匹配时删除第 N 列中特定数字之前的所有字符而不是最后一个
- azure - Cosmos 存储过程中的 RequestEntityTooLarge
- verilog - 最高有效位的 32 位 OR 操作 Verilog 意外结果