我有一个listview和一个ColumnWidthChanged事件的事件处理程序,每次用户更改时都会在配置文件中存储新的列大小。
我为每个在内部更改列的进程创建了标记,以便只能对用户输入作出反应。
此事件仍会在程序启动时触发(列表视图中的每一列都会触发一次)。
调用堆栈仅显示事件,“外部代码”和主“program.cs”。
我无法找到触发事件的位置。有什么想法吗?
答案 0 :(得分:0)
您需要将代码放在您将ColumnWidthChanged
事件连接到表单的Shown事件中。
正在发生的事情是ListView占用了表单上的物理空间,因此在构建时,它必须计算每列的大小。因此,当它将数据填充到它们中时,这些列在获得数据后会调整大小。这就是为什么它在每个列甚至显示之前都会触发一次。
至于为什么它没有在DataGridView上触发,我认为对象的大小是添加到表单的内容。它等待计算每个列的大小,直到DataGridView已添加到表单之后。这有点不直观的行为,但这似乎是你所看到的结果所发生的。