【发布时间】:2015-06-24 12:44:01
【问题描述】:
我有一个列表视图和一个用于 ColumnWidthChanged 事件的事件处理程序,它在每次用户更改某些内容时将新的列大小存储在配置文件中。
我已经为每个在内部更改列的进程创建了标志,以便只能对用户输入做出反应。
这个事件仍然在程序启动时触发(列表视图中的每一列一次)。
调用堆栈仅显示事件、“外部代码”和主“program.cs”。
我只是找不到触发事件的位置。有什么想法吗?
【问题讨论】:
-
如果打开的表单是您的主要表单,那么它会在启动时计算每列的宽度以准备显示。我会等待添加您的事件处理程序,直到 ?Loaded?事件。我不记得渲染完成后触发的是哪一个。
-
尝试连接到 Shown 事件中的 ColumnWidthChanged 事件。
-
我测试了表单的 'load' 事件并在那里添加了 listviews 事件处理程序。但是当时根本没有触发 listview 事件。
-
把它放到 Shown 事件中。在此之前,将当前代码添加到您的问题中,以便我可以看到您如何手动连接到事件。还包括您正在接线的方法。
-
那行得通!这仍然是奇怪的行为。我也有一个相同形式的 DataGridView,也对列宽变化做出反应,但该事件在启动时不会被触发......
标签: c# winforms visual-studio-2010