根据datagridview中的总行数调整表单高度?

时间:2014-06-05 17:18:45

标签: c# .net winforms datagridview

void PopulateApplications()
{
    dataGridView1.Rows.Clear();
    foreach (Process p in Process.GetProcesses())
    {
        if (p.MainWindowTitle.Length > 1)
        {
            var icon = Icon.ExtractAssociatedIcon(p.MainModule.FileName);
            ima = icon.ToBitmap();
            ima = resizeImage(ima, new Size(25, 25));
            ima.Save(@"c:\temp\ima.jpg");
            String status = p.Responding ? "Running" : "Not Responding";
            dataGridView1.Rows.Add(ima, p.ProcessName, status);
        }
    }
    int rc = dataGridView1.Rows.Count * ROW_SIZE;
}

在这种情况下,在第一次迭代后,添加了10行,我知道每行高度为22。 所以rc = 220。

现在在设计师的开头,form1的大小是:648,332 我之前检查过manualy,648,332适合行高,但是让我说我​​在设计器中更改了form1的大小,并从:648,200开始,有5行或20行。所以我想计算所有行的高度,并设置form1大小以适合所有行。

因为每个用户在运行程序时都会运行其他数量的进程。所以不是每个人648,332都是一个很好的form1。

1 个答案:

答案 0 :(得分:0)

这可能会解决您的问题。

void PopulateApplications()
{
    dataGridView1.Rows.Clear();
    foreach (Process p in Process.GetProcesses())
    {
        if (p.MainWindowTitle.Length > 1)
        {
            var icon = Icon.ExtractAssociatedIcon(p.MainModule.FileName);
            ima = icon.ToBitmap();
            ima = resizeImage(ima, new Size(25, 25));
            ima.Save(@"c:\temp\ima.jpg");
            String status = p.Responding ? "Running" : "Not Responding";
            dataGridView1.Rows.Add(ima, p.ProcessName, status);
        }
    }

    int totalRowSize = dataGridView1.Rows.Count * 22;
    int formHeight = this.Size.Height;

    if (totalRowSize > formHeight-30)
        this.Height = totalRowSize + 30;
}