当我将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;
}
答案 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;
这样他们甚至都看不到他们。并且它避免了对用户的混淆(如果我在控件上看到一个复选框,那么我通常希望我可以用它做一些事情)。