【问题标题】:How to ignore a checkbox change in listview?如何忽略列表视图中的复选框更改?
【发布时间】:2010-10-28 16:52:10
【问题描述】:

我有一个带有属性 checkbox = true 的列表视图。

当用户点击复选框并更改其状态(选中 -> 未选中或未选中 -> 选中)时,我会捕获 ItemCheck 事件并执行一些数据库实现。

我想在使用数据库之前要求用户确认。

当我用户取消它的命令时,我希望复选框恢复到它的状态。

如何让列表视图忽略复选框的状态变化?

谢谢,

马坦

【问题讨论】:

    标签: c# .net winforms visual-studio-2008 user-interface


    【解决方案1】:

    ItemCheck 事件中,将NewValue 设置为CurrentValue

    private void listView1_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        if (MessageBox.Show(this, "Change?", "Test", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
            e.NewValue = e.CurrentValue;
    }
    

    【讨论】:

      【解决方案2】:

      查看复选框的 OnClientClick 属性:

      http://www.dotnetcurry.com/ShowArticle.aspx?ID=93&AspxAutoDetectCookieSupport=1

      使用它您可以取消回发,并将复选框的值设置回原来的值。如果您使用模板字段而不是 checkbox=true 属性,您可以将 OnClientClick 属性添加到那里的复选框;否则需要在 ListView ItemDataBound 事件中动态添加。

      EDIT 糟糕,没有看到“winforms”标签;以为这是 ASP.Net(它也有一个 ListView 控件)。请无视。

      【讨论】:

        【解决方案3】:

        我使用了 OnChecked 事件而不是 OnCheck。

        要取消,我只需将值设置为 !value。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-07-26
          • 1970-01-01
          • 2016-06-03
          • 1970-01-01
          • 1970-01-01
          • 2011-07-05
          • 1970-01-01
          相关资源
          最近更新 更多