DataGridView.DisplayedRowCount仅在DataGridView可见时有效

本文关键字:DataGridView 有效 DisplayedRowCount 仅在 | 更新日期: 2023-09-27 18:10:01

DataGridView类型的DisplayedRowCount()如果父窗体或DataGridView本身不可见则返回0。例如,在父表单的构造函数中就是这种情况(参见下面的代码)。是否有一个替代功能,如果datagridview是不可见的,也可以工作?所以我想在让它们可见之前知道它们的可见行数

using System;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
  public partial class Form1 : Form
  {
    DataGridView dgv = new DataGridView();
    public Form1()
    {
      InitializeComponent();
      dgv.Parent = this;
      dgv.Columns.Add("col1", "col1");
      dgv.Columns.Add("col2", "col2");
      for (int i = 0; i < 100; ++i)
        dgv.Rows.Add(i, i);
      int drc = dgv.DisplayedRowCount(false);
      MessageBox.Show(drc.ToString());    // returns 0
    }
    protected override void OnShown(EventArgs e)
    {
      base.OnShown(e);
      int drc = dgv.DisplayedRowCount(false);
      MessageBox.Show(drc.ToString());    // returns 4
    }
  }
}

DataGridView.DisplayedRowCount仅在DataGridView可见时有效

我不认为有一个干净的方法来做到这一点。DataGridView应该如何知道在实际显示之前将显示给用户的确切行数?在这个意义上,DisplayedRowCount()的结果0是绝对正确的。

但是,根据您的需求,您可以使用form显示表单。不透明度设置为0,因此它将对用户不可见。