早上好。
我在表单中有一个Datagridview,它在数据库中连接,看起来像这样。
我对这部分没有任何问题。
我的问题是这样的。如何使第四列可编辑?我的意思是我可以点击这个属性来编辑它
现在输出将是这样的。
现在这是真正的问题,我将根据我的系统将要执行的流程提出一个问题。
1.第4列是可编辑的列,其余列将被锁定或不可编辑
2.可以说我将48
当我离开牢房时如何才能48.00
?这种格式最后是.00。
3.无法在第4栏输入字母。
TYSM未来的帮助
答案 0 :(得分:1)
ReadOnly
属性为True
希望用户能够编辑。DefaultCellStyle.Format
属性设置为“n2”或“f2”。TextBox
中的数字输入,因为这将以完全相同的方式工作。您只需要通过网格的相应事件处理程序访问用于编辑的TextBox
控件。在下面的示例中,由于editingTextBox
字段已声明为WithEvents
,因此最后一个方法将处理编辑控件的TextChanged
事件,同时将其分配给该字段编辑会议。
Private WithEvents editingTextBox As TextBox
Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
Me.editingTextBox = DirectCast(e.Control, TextBox)
End Sub
Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
Me.editingTextBox = Nothing
End Sub
Private Sub editingTextBox_TextChanged(sender As Object, e As EventArgs) Handles editingTextBox.TextChanged
'...
End Sub
答案 1 :(得分:0)
将其他列设置为readonly = true且数字列= false,并将数字列的defaultcellstyle.format设置为" ###,## 0.00"在您的datagridview的cellvalidating事件中,执行ff:
Private Sub DatagridView1_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DatagridView1.CellValidating
Try
If DatagridView1.IsCurrentCellDirty Then
Select Case DatagridView1.Columns(e.ColumnIndex).Name.ToUpper
Case "<NAME OF YOUR NUMERIC COLUMN>"
If Not IsNumeric(e.FormattedValue) Then
MsgBox("Invalid value.")
e.Cancel = True
Exit Sub
End If
If CType(e.FormattedValue, Integer) < 0 Then
MsgBox("Invalid value.")
e.Cancel = True
Exit Sub
End If
End Select
End If
Catch ex As Exception
ErrMsg(ex)
End Try
End Sub
答案 2 :(得分:-1)
Private Sub dgvwithdraw_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvwithdraw.CellClick
Select Case dgvwithdraw.Columns(e.ColumnIndex).Name
Case "Select", "Alloted"
dgvwithdraw.ReadOnly = False
Case Else
dgvwithdraw.ReadOnly = True
End Select
End Sub