2

我有一个 DataGridViewTextBoxColumn,它包含不同类型的 DataGridViewCells(组合框、文本和按钮)。

不同的 DataGridView 单元格

这是我构建 datagridview 行的方法:

Public Shared Function BuildDgvRow(ByVal tq As clsTabsQuestion) As DataGridViewRow
    Dim Row As New DataGridViewRow
    Dim ComboBoxCell As New DataGridViewComboBoxCell
    Dim CellBtn As New DataGridViewButtonCell //File Upload
    Dim CellTxtQ As New DataGridViewTextBoxCell //Cell question
    Dim CellTxt As New DataGridViewTextBoxCell //Cell txt

    CellTxtQ = New DataGridViewTextBoxCell

    //Build row
    With Row
        //Add cell that will contain question
        .Cells.Add(CellTxtQ)

        //Add CheckBox / Button / Text to the other cell that will contain the answer
        Select Case tq.sType
            Case "YesNo"
                ComboBoxCell = New DataGridViewComboBoxCell()
                ComboBoxCell.Items.AddRange(New String() {"Yes", "No", "N/A"})
                .Cells.Add(ComboBoxCell)
            Case "FileUpload"
                CellBtn = New DataGridViewButtonCell
                .Cells.Add(CellBtn)
            Case "Text"
                CellTxt = New DataGridViewTextBoxCell
                .Cells.Add(CellTxt)
        End Select

        //Set row values
        .SetValues({tq.Title, ""})
        .Tag = tq
    End With

    Return Row
End Function

我似乎无法从 DataGridViewButtonCell 类中获得任何“文本”属性。有没有办法在 DataGridViewButtonCell 上设置文本?这是一个问卷,用户可以创建自己的问卷。因此,他们可以选择组合框、文本或按钮作为他们问题的答案。

我正在尝试做的事情可能吗?

4

1 回答 1

3

经过进一步调查,我发现了我的问题......当我尝试使用时,CellBtn.Value我忘记了我正在将行值重置为空字符串。傻我。

这是我解决它的方法(两种方法)

使用 DataGridViewButtonCell.Value 设置文本

Public Shared Function BuildDgvRow(ByVal tq As clsTabsQuestion) As DataGridViewRow
    Dim Row As New DataGridViewRow
    Dim ComboBoxCell As New DataGridViewComboBoxCell
    Dim CellBtn As New DataGridViewButtonCell //File Upload
    Dim CellTxtQ As New DataGridViewTextBoxCell //Cell question
    Dim CellTxt As New DataGridViewTextBoxCell //Cell txt

    CellTxtQ = New DataGridViewTextBoxCell

    //Build row
    With Row
        //Add cell that will contain question
        .Cells.Add(CellTxtQ)

        //Add CheckBox / Button / Text to the other cell that will contain the answer
        Select Case tq.sType
            Case "YesNo"
                ComboBoxCell = New DataGridViewComboBoxCell()
                ComboBoxCell.Items.AddRange(New String() {"Yes", "No", "N/A"})
                .Cells.Add(ComboBoxCell)
            Case "FileUpload"
                CellBtn = New DataGridViewButtonCell
                CellBtn.Value = "ASdasdwd"
                .SetValues({tq.Title, CellBtn.Value})
                .Cells.Add(CellBtn)
            Case "Text"
                CellTxt = New DataGridViewTextBoxCell
                .Cells.Add(CellTxt)
        End Select

        //Set values
        If tq.sType <> "FileUpload" Then .SetValues({tq.Title, ""})
        .Tag = tq
    End With

    Return Row
End Function

使用 DataGridViewRow.SetValue 设置文本

Public Shared Function BuildDgvRow(ByVal tq As clsTabsQuestion) As DataGridViewRow
    Dim Row As New DataGridViewRow
    Dim ComboBoxCell As New DataGridViewComboBoxCell
    Dim CellBtn As New DataGridViewButtonCell //File Upload
    Dim CellTxtQ As New DataGridViewTextBoxCell //Cell question
    Dim CellTxt As New DataGridViewTextBoxCell //Cell txt

    CellTxtQ = New DataGridViewTextBoxCell

    //Build row
    With Row
        //Add cell that will contain question
        .Cells.Add(CellTxtQ)

        //Add CheckBox / Button / Text to the other cell that will contain the answer
        Select Case tq.sType
            Case "YesNo"
                ComboBoxCell = New DataGridViewComboBoxCell()
                ComboBoxCell.Items.AddRange(New String() {"Yes", "No", "N/A"})
                .Cells.Add(ComboBoxCell)
            Case "FileUpload"
                CellBtn = New DataGridViewButtonCell
                .Cells.Add(CellBtn)
            Case "Text"
                CellTxt = New DataGridViewTextBoxCell
                .Cells.Add(CellTxt)
        End Select

        //Set values
        If tq.sType = "FileUpload" Then .SetValues({tq.Title, "Upload"}) Else .SetValues({tq.Title, ""})
        .Tag = tq
    End With

    Return Row
End Function
于 2013-08-17T21:32:10.370 回答