如何使listview中的复选框只读取c#?

时间:2014-01-25 11:12:40

标签: c# winforms listview checkbox

当我将listview属性设置为enabled = false时,滚动条将不起作用。 我想要的只是当用户决定添加产品时,复选框将正常工作,因为它应该与列表视图上的滚动条相同,但是当用户想要查看产品时,它可以在列表视图上滚动但不会让用户选中或取消选中复选框。请帮帮我。

当我添加产品时,我可以滚动并选中复选框 正常:

private void addProduct_Click(object sender, EventArgs e)         {
            listviewProduct.Enabled = true;
        }

http://postimg.org/image/6y4g9568x/

当我查看产品时,我无法向下滚动,也无法检查复选框(灰显):

private void viewProduct_Click(object sender, EventArgs e)         {
                listviewProduct.Enabled = false;
            }

http://postimg.org/image/7cjz9o1jf/

2 个答案:

答案 0 :(得分:4)

您可以使用ItemCheck事件轻松实现此功能。假设您在表单类中有一个bool变量,指示ListView处于“仅查看”模式:

    private bool ViewReadOnly;

然后像这样编写ItemCheck事件处理程序:

    private void listViewProduct_ItemCheck(object sender, ItemCheckEventArgs e) {
        if (ViewReadOnly) e.NewValue = e.CurrentValue;
    }

当UI切换到“仅查看”模式时,只需将变量设置为 true ,当切换到编辑模式时,返回 false 。所以:

    private void viewProduct_Click(object sender, EventArgs e) {
        ViewReadOnly = true;
        listViewProduct.BackColor = Color.Gainsboro;
    }

等等。不要吝啬BackColor的变化,或者你喜欢的任何其他指示,你想给用户一些反馈,敲击复选框不会产生任何影响。

答案 1 :(得分:1)

当处于只读模式时,您当然可以将设置复选框设置为false吗?

listView1.CheckBoxes = false;   

这样他们甚至都看不到他们。并且它避免了对用户的混淆(如果我在控件上看到一个复选框,那么我通常希望我可以用它做一些事情)。

相关问题