繁体   English   中英

以编程方式将复选框添加到 DataGridView 单元格

[英]Add CheckBox To DataGridView Cell Programmatically

如果旁边的单元格的值为“1”,我正在尝试以编程方式将 CheckBox 添加到 DataGridVew 单元格。 我正在尝试在添加行时执行此操作

我希望有人可以在这里帮助我使用正确的代码。 我知道其中一行代码不正确,但我已将其放入以说明我正在尝试做什么。

提前致谢。

    Private Sub Controls_DGV_RowsAdded(sender As Object, e As Windows.Forms.DataGridViewRowsAddedEventArgs) Handles Controls_DGV.RowsAdded

        If Controls_DGV.Rows(e.RowIndex).Cells(2).Value = "1" Then
            Controls_DGV.Rows(e.RowIndex).Cells(1).AddCheckBox ' THIS LINE IS INCORRECT
        End If

    End Sub

您想要显示复选框的列号 1 应该已经是 DataGridViewCheckBoxColumn 类型,然后如果值不是“1”,您可以为 DataGridViewTextBoxCell 转换单元格的类型,因此没有复选框,您甚至可以将其放在那里如果你想要一些文字。 因为您使用的是 3 列,所以我会尝试这样做。

如果您以编程方式添加列,则在您的 Form1_Load() 中应该有这样的内容:

    Dim ChkBox As New DataGridViewCheckBoxColumn
    Controls_DGV.Columns.Add("TextBox1", "TextBox1")
    Controls_DGV.Columns.Add(ChkBox)
    Controls_DGV.Columns.Add("TextBox2", "TextBox2")

然后使用你的代码应该是这样的:

    Private Sub Controls_DGV_RowsAdded(sender As Object, e As Windows.Forms.DataGridViewRowsAddedEventArgs) Handles Controls_DGV.RowsAdded

        If Controls_DGV.Rows(e.RowIndex).Cells(2).Value <> "1" Then
             ' replace the checkbox cell by textbox cell
             Controls_DGV.Rows(e.RowIndex).Cells(1) = New DataGridViewTextBoxCell()
             Controls_DGV.Rows(e.RowIndex).Cells(1).Value = "(empty or some text)"
        End If
    End Sub

除了检查值之外,这与@miguel 相同,在这种情况下, Option Strict应该是On

Public Class Form1
    Private Sub dataGridView1_RowsAdded(sender As Object, e As DataGridViewRowsAddedEventArgs) _
        Handles dataGridView1.RowsAdded

        If CStr(dataGridView1.Rows(e.RowIndex).Cells(1).Value) <> "1" Then
            dataGridView1.Rows(e.RowIndex).Cells(0).Value = False
            dataGridView1.Rows(e.RowIndex).Cells(0) = New DataGridViewTextBoxCell()
            dataGridView1.Rows(e.RowIndex).Cells(0).Value = ""
            dataGridView1.Rows(e.RowIndex).Cells(0).ReadOnly = True
        End If

    End Sub

    Private Sub AddRowsButton_Click(sender As Object, e As EventArgs) _
        Handles AddRowsButton.Click

        For index As Integer = 0 To 5
            If CBool(index Mod 2) Then
                dataGridView1.Rows.Add(False, "0")
            Else
                dataGridView1.Rows.Add(False, "1")
            End If
        Next

    End Sub
End Class

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM