DataGridView.DisplayedRowCount仅在DataGridView可见时才有效

时间:2015-08-27 12:53:34

标签: c# .net datagridview

如果父窗体或datagridview本身不可见,则DataGridView类型的DisplayedRowCount()返回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
    }
  }
}

1 个答案:

答案 0 :(得分:1)

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

但是,根据您的要求,您可能会将Form.Opacity设置为0的表单显示,因此对用户来说是不可见的。