【问题标题】:C# DataGridView CheckBox if condition doesnt meet dont allow selectionC# DataGridView CheckBox 如果条件不满足不允许选择
【发布时间】:2012-06-13 11:13:09
【问题描述】:

我有一个数据网格视图,其中有一列带有复选框。我想要做的是当用户单击复选框时,我需要检查一些其他条件,并且仅在满足其他条件时才允许选中复选框以停止事件并且不允许复选框选择。

有人可以指导吗?

【问题讨论】:

  • this question 中提到的事件可能会对您有所帮助,只需在其中进行验证即可。

标签: c# .net winforms


【解决方案1】:

这真的很简单。

您可以将事件处理程序附加到您的复选框,当事件触发时,只需检查您需要检查的所有内容,如果不满足条件,则在复选框上调用取消选中。

【讨论】:

  • 我想我的问题很模糊。当用户单击复选框时,在实际选中复选框之前,我想验证我的条件,如果它们满足我允许事件完成并且复选框被选中,否则,复选框永远不会被选中
  • 如果条件不满足就直接拨打checkBox.Checked = false;吧。
  • hunm ..我应该尝试过这个,但这是我的理解..当用户点击时,我可以从数据库验证,这会回来并且需要时间,现在在这段时间内用户会看到复选框被选中,一旦我从数据库中取回数据,那么我可以设置 checkbox.checked=false;但是在此期间复选框将显示为已选中,这就是我不想做的,我实际上希望它是干净的(希望如此)并且不会允许实际的检查事件完成。有没有办法以这种方式困住偶人
  • 我想我得解决了,我会用事件 dataGridView1_CellContentClick 解决
  • 在我看来,如果可能的话,您需要重新考虑设计。如果您因为数据库中的某些内容而不想让用户检查它,您应该能够在最初显示时将该指标发送到表单,然后甚至禁用复选框开始。为什么要等到被点击才去查数据库?
【解决方案2】:

好的,这是我的问题的回顾 我有一个 Windows 窗体应用程序,它从数据源(文件、数据库等)加载一些信息。 加载后,每一行的第一列中都有 DataGridViewCheckBoxCell 。要求是当用户单击复选框时,必须对照源检查该特定行没有被来自任何其他工作站的任何其他用户检查。 我设想的解决方案逻辑: 我想确保当用户单击单元格时,在检查 chackbox 之前,我从数据源中进行检查,并且不允许选中复选框,或者根据该行是否被其他人使用而允许它。

我的解决方案: 我想出的是使用 CellClick 事件,因为当用户单击单元格时,尚未选中复选框,然后我检查数据源是否有其他用户正在使用它,如果正在使用,我设置这 checkbox.ReadOnly=true

这样,这个事件基本上已经死了,什么也没有发生......:-) 我希望我有更好的方法,但这符合我的需求。

感谢每一位试图提供帮助的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 2017-04-09
    相关资源
    最近更新 更多