【发布时间】:2011-12-06 19:47:02
【问题描述】:
我有一个包含选项卡的 winform,包含一个用户控件,包含一个带有复选框的列表视图。
private void lvwRoles_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e)
{
if (!m_loading && m_locked)
{
e.NewValue = e.CurrentValue;
return;
}
列表视图在从父窗体调用的方法(在用户控件中)中分配了它的项目(一些已检查)。这是在加载父表单时完成的。
我的问题是ItemCheck 在我第一次单击相应选项卡时出现。
这导致 m_loading 状态变量很久以前就为 false。
因此,当用户控件为 m_locked 时,不会检查任何项目。
有没有办法在不改变列表视图的填充方式的情况下解决这个问题?
【问题讨论】:
-
很不清楚。使用调试器,在此方法上设置断点。调用堆栈向您显示事件被触发的原因。
-
@HansPassant 当然我已经尝试过了。它显示了[非用户代码]、Main、[非用户代码]、ItemCheck。该事件显然被框架推迟到加载 gui 为止。我的问题很明确。
标签: c# .net winforms listview events