0

我现在正在处理这种情况。如您所知,WPF您可以将控件设置为 Auto its size (Width or Height),因此当您这样做时,控件不会出现其垂直滚动条。

我希望在 Windows 窗体中的一个中具有相同的行为DataGridView,该控件有很多行,我想知道该控件在没有垂直滚动条的情况下表达其实际大小。我该怎么做这个功能?

在此处输入图像描述

目前,它DataGridView具有固定大小(600px)

4

2 回答 2

1

假设您的初始高度设置为滚动条不可见,添加这些事件处理程序将允许您在添加或删除行时缩放您的高度:

private void dataGridView_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
    int height = 0;
    for (int i = e.RowIndex; i < (e.RowIndex + e.RowCount); i++)
        height += dataGridView.Rows[i].Height;

    dataGridView.Height += height;
}    

private void dataGridView_RowsRemoved(object sender, DataGridViewRowsAddedEventArgs e)
{
    int height = 0;
    for (int i = e.RowIndex; i < (e.RowIndex + e.RowCount); i++)
        height += dataGridView.Rows[i].Height;

    dataGridView.Height -= height;
}

作为旁注,我建议不要在您的程序中使用此功能。自动调整大小的列表框通常是一个糟糕的 UI 设计选择。你想用这个控件来完成什么?可能有一种更有效的方法来执行您在此处尝试执行的操作。

于 2013-01-12T18:38:08.900 回答
0

尝试设置它的Dock属性。假设它的调用如下:

dataGridView1.Dock = DockStyle.Left;

显然,网格仍将显示滚动条,但其高度将适应其容器的高度。

于 2013-01-12T18:17:54.237 回答