【问题标题】:C# ListView - control checkBox eventC# ListView - 控制复选框事件
【发布时间】:2009-06-10 16:03:53
【问题描述】:

假设我需要将项目的状态从 active = true 更改为 active = false ,反之亦然,同时将我的更改保留在数据库表中。

我测试了 ItemChecked 事件,如下所示:

    private void listView1_ItemChecked(object sender, ItemCheckedEventArgs e)
    {
        ListViewItem item = (ListViewItem)sender;

        if (item != null)
        {
            Book b = (Book) item.Tag;

            b.MakeActive(item.Checked);
        }
    }

我失败了。

谁能帮帮我?

【问题讨论】:

  • ListViewItem item = (ListViewItem)sender;如果它的强制转换无效,将引发异常,因此您需要将该行更改为 ListViewItem item = sender as ListViewItem;如果您希望无效的强制转换返回 null
  • 请描述你是如何失败的。您是否遇到异常 - 您预计会发生什么,会发生什么?
  • private void listView1_ItemChecked(object sender, ItemCheckedEventArgs e) { ListViewItem item = (ListViewItem)e.Item; if (item != null) { if (item.Tag != null) { Teacher t = ((Teacher)item.Tag); t.TeacherGoesToLeave(item.Checked); } } } 我就是这样成功的。

标签: c# listview controls


【解决方案1】:

在这种情况下 object senderListView 而不是 ListViewItem 你的代码应该是这样的

private void listView1_ItemChecked(object sender, ItemCheckedEventArgs e)
{
   ListViewItem item = e.Item as ListViewItem;

    if (item != null)
    {
        Book b = (Book) item.Tag;

        b.MakeActive(item.Checked);
    }
}

【讨论】:

    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多