繁体   English   中英

如果第二个单元格为空,如何使单元格只读

[英]How to make cell readonly if the second cell is empty

用户应该无法在 datagridview 中输入单位为空的数量。

为了清楚起见,如果单元列为空,我想让单元格 readonly = true 。

colUOM4 是列的名称,如果该列的单元格为空,则 olNewQty2 单元格将是只读的。

我试过这段代码,但没有用

 Public Sub UnitEmpty()
    For i As Integer = 0 To dgvCount.RowCount - 1
        If dgvCount.Rows(i).Cells("colUOM4").Value Is Nothing Then
            MessageBox.Show("It worked!")
            dgvCount.Rows(i).Cells("colNewQty2").ReadOnly = True
        Else
            MessageBox.Show("Nothing happened!")

            Exit For
        End If
    Next
End Sub

这是我的数据网格视图,它的名称是 dgvCount

我建议不要使用循环,因为这只会在您执行它时设置状态,而不会对任何更改做出反应。 我建议在行和单元格级别工作,即在添加行时设置默认状态,然后在特定单元格更改时做出反应,例如

Private Sub DataGridView1_RowsAdded(sender As Object, e As DataGridViewRowsAddedEventArgs) Handles DataGridView1.RowsAdded
    For i = e.RowIndex To e.RowIndex + e.RowCount - 1
        'Make the first cell in each new row read-only by default.
        DataGridView1(0, i).ReadOnly = True
    Next
End Sub

Private Sub DataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
    'Check whether the change is in the second column.
    If e.RowIndex >= 0 AndAlso e.ColumnIndex = 1 Then
        Dim row = DataGridView1.Rows(e.RowIndex)

        'Make the first cell in the row read-only if and only if the second cell is empty.
        row.Cells(0).ReadOnly = (row.Cells(1).Value Is Nothing)
    End If
End Sub

暂无
暂无

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

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