【问题标题】:Winforms ListView ItemCheck on loadWinforms ListView ItemCheck 加载
【发布时间】: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


【解决方案1】:

列表视图在方法(在 从父窗体调用的用户控件)。这是在 父窗体的加载。

即使您在选择该选项卡时有效触发的父 form_load 中调用该方法。加载用户控件后将 m_loading 设置为 false,直到您选择该选项卡后才会发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多