簡體   English   中英

根據DGV的屬性限制可在datagridview中輸入的行數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM