【问题标题】:Can I set the Max number of rows in unbound DataGridView我可以在未绑定的 DataGridView 中设置最大行数吗
【发布时间】:2011-04-21 20:39:55
【问题描述】:

我很难相信以前没有人问过这个问题,但它看起来不像以前那样,而且我的 Google 搜索都是徒劳的。

我可以设置 DataGridView 允许用户添加的最大行数吗? (就像添加第 10 行后,它不会再显示“新行”行?)。

【问题讨论】:

    标签: c# winforms datagridview


    【解决方案1】:

    没有直接的属性可以做到这一点,但您应该能够使用AllowUserToAddRows 属性和UserAddedRow 事件的组合轻松完成此操作。

    一般的思路是添加一个事件处理程序来对照Maximum Allowed检查行数,然后设置AllowUserToAddRows = false

    public partial class frmGridWithRowLimit : Form
    {
        public Int32 MaxRows { get; set; }
    
        public frmGridWithRowLimit()
        {
            MaxRows = 10;
    
            InitializeComponent();
    
            dgRowLimit.UserAddedRow += dgRowLimit_RowCountChanged;
            dgRowLimit.UserDeletedRow += dgRowLimit_RowCountChanged;
        }
    
        private void dgRowLimit_RowCountChanged(object sender, EventArgs e)
        {
            CheckRowCount();
        }
    
        private void CheckRowCount()
        {
            if (dgRowLimit.Rows != null && dgRowLimit.Rows.Count > MaxRows)
            {
                dgRowLimit.AllowUserToAddRows = false;
            }
            else if (!dgRowLimit.AllowUserToAddRows)
            {
                dgRowLimit.AllowUserToAddRows = true;
            }
        }
    }
    

    您还需要处理用户删除行的情况,以确保您允许他们再次添加行。

    希望对你有帮助

    干杯, 乔什

    【讨论】:

    • 嘿,谢谢...方便地 MaxRows 在我的情况下是一个常数,甚至不必担心更改该值。我会试一试,然后马上回来奖励你 25 分! :)
    • 美丽。我正在尝试与此几乎相同的东西,但我错过了几个重要部分!我仍然对没有内置“最大行数”感到惊讶! :)
    • @Cpfohl,可能是因为它确实只适用于这种特定场景,并且大多数人使用带有 DataBinding 的网格。如果您尝试使用数据绑定网格执行此操作,则会涉及许多问题。 值得一提,这并没有考虑以编程方式添加的行。但是,如果在您的场景中不会发生这种情况,那么上面的解决方案就足够了。
    • 值得注意的是,当启用“AllowUserToAddRows”时,GridView的RowCount属性也会更高,因为“添加新行”行也被计算在内。
    猜你喜欢
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2012-05-30
    相关资源
    最近更新 更多