[英]Limit number of Rows that can be entered in a datagridview based on property of DGV
我有一個UI,它使用類型化數據集的datagridviews / bindingsource / datatables進行數據輸入。 數據集本身在SQL中被序列化為varbinary(max)。 (即沒有表適配器,后端模式)
我想限制用戶可以進入某些網格的行數(數據用於填充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
我看到的行為是,即使用戶試圖離開網格,消息框也會在離開最大行后出現。 我可能會丟失消息框並以其他方式處理通知,但我認為其他人可能想出了一些更復雜的方法來處理,只是導致嘗試添加到許多記錄以從網格中導航到下一個UI控件。
對於采用更優雅的方法來解決此問題,我們將不勝感激。
TIA
如何檢查“行收藏者”事件處理程序中的行數?
另一種選擇是在一開始就將最大行數添加到DGV中,防止用戶添加更多行,並在准備好提交輸入時檢查是否已輸入信息。
int MaxRowCount = 3;
private void dgUser_UserAddedRow(object sender, DataGridViewRowEventArgs e)
{
if (dataGridView1.Rows.Count > MaxRowCount)
{
dataGridView1.AllowUserToAddRows = false;
}
else
{
dataGridView1.AllowUserToAddRows = true;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.