Winforms面板尺寸

时间:2017-08-08 15:47:20

标签: c# winforms

在我的表单中,我有一个autosize = true的面板。

该面板包含一个SplitContainer控件,其中有两个水平排列的面板。

顶部面板包含数据网格视图,底部面板包含文本框。

我有没有办法以编程方式调整顶部面板的大小,因此整个SplitContainer基于datagridview高度的变化(由行数决定)

更新: 我现在能够调整具有Dock = Bottom的SplitContainer的大小,但是,即使父面板具有Autosize = True

2 个答案:

答案 0 :(得分:0)

尝试根据网格的高度设置SplitContainer的分割距离。

  

SplitterDistance 从SplitContainer的左边缘或上边缘获取或设置拆分器的位置(以像素为单位)。

通过https://msdn.microsoft.com/en-us/library/system.windows.forms.splitcontainer.splitterdistance(v=vs.110).aspx

修改 对我来说有用的是将SplitContainer的Dock设置为 None ,然后允许我设置SplitContainer的大小(调用SplitContainer.Height)并让面板调整自身以适应SplitContainer。

编辑2 要允许SplitContainer自动调整其宽度,您可以尝试以下操作:

splitContainer.Width = this.ClientRectangle.Width - (splitContainer.Location.X * 2)

This.ClientRectangle.Width应该获得没有边框的窗口宽度(如果父窗体是窗体)。

答案 1 :(得分:0)

由于某种我无法理解的原因,如果我在代码中强加面板大小,则该对象将获得正确的大小。 如果我在IDE中定义面板尺寸为300x300,则稍后显示的尺寸会变小,并且线条不可见。

 public Form1()
    {
        InitializeComponent();
        panel1.Size = new Size(300, 300);
    }