【问题标题】:How do I make the button invisible and visible if certain conditions are met in the data grid view.?如果在数据网格视图中满足某些条件,如何使按钮不可见和可见。?
【发布时间】:2020-04-11 20:20:16
【问题描述】:

我有一个填充了行的datagridview,第一列是一个复选框。

一些行的复选框被预先选中,表明这些记录已被处理。

表单中有一个按钮,仅当您单击网格中的复选框时才启用,否则如果未选中新复选框,则不可见。

问题在于,正如我所说,检查的文本框总是很少。

【问题讨论】:

  • 是否有一种明显的方法可以知道其中一个复选框何时是“新”复选框?
  • 有什么好处是:发布一些代码并为问题提供更多上下文。但是假设datagridview 绑定到datatable,您可以简单地引用datatable 并检测底层数据发生的变化,而不是检查UI 组件。目前尚不清楚真正的目标是什么——可能有更好的方法。 datatable 还包含可用于检测更改的事件。每个datatable 也是一个状态:当前/未更改/已更改/已添加/已删除等。
  • 使用预检查的DataGridViewCheckBoxCell-sTag 属性来识别它们。
  • 可以简单地将按钮启用属性数据绑定到复选框底层字段

标签: vb.net winforms datagridview


【解决方案1】:

这取决于您设置的条件,控制按钮的可见性真的很容易,我相信您知道如何操作。这只是BUTTONNAME.visible = true/false,但如果你想创建条件,如果复选框被选中,那么它会有点像这样 -

    Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Timer1.Start()
    End Sub



    Private Sub Waiter()
        If CheckBox1.Checked = True Then
            If CheckBox2.Checked = True Then
                If CheckBox3.Checked = True Then
                    Button1.Visible = True

                ElseIf CheckBox3.Checked = False Then
                    Button1.Visible = False
                End If

            ElseIf CheckBox2.Checked = False Then
                Button1.Visible = False
            End If

        ElseIf CheckBox1.Checked = False Then
            Button1.Visible = False
        End If


    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Waiter()
    End Sub
End Class

显然这是非常粗糙的,它使用了一个计时器,在本例中是Timer1。还有其他方法,但使用这是最好的方法。这实际上取决于您尝试对代码执行的操作,例如接受 ToS 或 EULA。无限可能

【讨论】:

    【解决方案2】:

    如果您使用的是 DataGridView,您基本上会使用相同的东西,但您必须引用单元格或列。您还没有指定行或列是什么,但是如果您知道如何引用它们并获取值,那么您已经设置好了,只需使用上面的相同代码即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      • 2012-08-15
      相关资源
      最近更新 更多