我有一个UI,它使用typed数据集的datagridviews/bindingsource/datatable进行数据输入。数据集本身被序列化为SQL中的varbinary(max)。 (即没有tableadapter,后端架构)基于DGV的属性,可限制在datagridview中输入的行数
我想限制用户可以进入一些网格的行数(数据用于填充PDF表单,我不希望他们输入更多的行比形式可容纳。)
我有子类DataGridView中,增加了一个rowlimit财产,并试图操纵AllUsertoAddRows财产
Imports System.Windows.Forms
Public Class dgv
Inherits System.Windows.Forms.DataGridView
Private _Rowlimit As Int32
Public Property Rowlimit() As Int32
Get
Return _Rowlimit
End Get
Set(ByVal value As Int32)
_Rowlimit = value
End Set
End Property
Private Sub dgv_RowLeave(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DataGridViewCellEventArgs) Handles Me.RowLeave
If Me.Rowlimit > 0 And Me.RowCount > Me.Rowlimit Then
MessageBox.Show("Maximun records (" & Me.Rowlimit & ") reached.")
Me.AllowUserToAddRows = False
Else
Me.AllowUserToAddRows = True
End If
End Sub
Private Sub dgvContainer_RowsRemoved(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DataGridViewRowsRemovedEventArgs) Handles Me.RowsRemoved
If Me.Rowlimit = 0 Or Me.RowCount < Me.Rowlimit Then
Me.AllowUserToAddRows = True
End If
End Sub
End Class
我看到的行为是在MessageBox即使在离开最大行后出现当用户试图离开电网时。我可能会丢失消息框并以其他方式处理通知,但我认为其他人可能想出了一些更复杂的处理方法,只是简单地导致尝试添加许多记录以导出网格到下一个UI控件。
希望有任何其他建议,以更好的方式来解决这个问题。
TIA