【问题标题】:Limit number of Rows that can be entered in a datagridview based on property of DGV根据 DGV 的属性限制可以在 datagridview 中输入的行数
【发布时间】:2010-02-24 22:05:02
【问题描述】:

我有一个 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

【问题讨论】:

    标签: c# vb.net .net-3.5 datagridview


    【解决方案1】:

    如何检查 RowsAdded 事件处理程序中的行数?

    另一个选项是在开始时将允许的最大行数添加到 DGV 中,防止用户添加更多,并在您准备好提交输入时检查是否已输入信息。

    【讨论】:

      【解决方案2】:

      int MaxRowCount = 3;

          private void dgUser_UserAddedRow(object sender, DataGridViewRowEventArgs e)
          {
              if (dataGridView1.Rows.Count > MaxRowCount)
              {
                  dataGridView1.AllowUserToAddRows = false;
              }
              else
              {
                  dataGridView1.AllowUserToAddRows = true;
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-01
        • 1970-01-01
        相关资源
        最近更新 更多