ListView ColumnWidthChanged事件被激发';没有理由;

本文关键字:有理由 ColumnWidthChanged 事件 ListView | 更新日期: 2023-09-27 17:59:30

我有一个列表视图和一个ColumnWidthChanged事件的事件处理程序,每当用户更改某些内容时,它都会将新的列大小存储在配置文件中。

我为每个在内部更改列的进程创建了标志,以便只能对用户输入做出反应。

尽管如此,该事件在程序启动时仍会被激发(对于列表视图中的每列激发一次)。

调用堆栈只显示事件、"外部代码"和主"program.cs"。

我只是不知道事件是从哪里触发的。有什么想法吗?

ListView ColumnWidthChanged事件被激发';没有理由;

您需要将代码放在将ColumnWidthChanged事件连接到表单的Shown事件的位置。

实际情况是ListView占用了表单上的物理空间,因此在构建它时,它必须计算每列的大小。因此,当它将数据填充到这些列中时,一旦这些列有了数据,就会调整它们的大小。这就是为什么它在显示之前为每列启动一次。

至于为什么它不在DataGridView上启动,我认为对象的大小就是添加到表单中的大小。它会等到DataGridView添加到表单后再计算每列的大小。这有点不直观,但从你看到的结果来看,这似乎就是发生的事。