如果父窗体或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
}
}
}
答案 0 :(得分:1)
我认为这不是一个干净的方法。 DataGridView应该如何知道在实际显示之前将显示给用户的确切行数?在这个意义上,DisplayedRowCount()的结果0绝对正确。
但是,根据您的要求,您可能会将Form.Opacity设置为0的表单显示,因此对用户来说是不可见的。