C# 调整窗体宽度以匹配拆分容器大小

C# 调整窗体宽度以匹配拆分容器大小,c#,.net,winforms,splitcontainer,C#,.net,Winforms,Splitcontainer,我在表单中有一个SplitContainer,其Dock属性设置为Fill。SplitPanel1包含一个picturebox,因此当picturebox大小减小时,表单右侧有空白 如何修剪表单大小,使其与内容匹配 我试过了 Myform.Size = Myform.splitContainer1.Size; 从发射台 但这不起作用,我做错了什么 更新: 屏幕截图 设计视图 这是这里的设计视图,您可以看到spiltpanel填充了表单。 共有2个面板。左侧面板包含一个picturebox,右侧

我在表单中有一个SplitContainer,其
Dock
属性设置为
Fill
。SplitPanel1包含一个picturebox,因此当picturebox大小减小时,表单右侧有空白

如何修剪表单大小,使其与内容匹配

我试过了

Myform.Size = Myform.splitContainer1.Size;
从发射台

但这不起作用,我做错了什么

更新:

屏幕截图

设计视图

这是这里的设计视图,您可以看到spiltpanel填充了表单。 共有2个面板。左侧面板包含一个picturebox,右侧面板包含另一个面板

运行时视图

这是运行时视图。您可以看到picturebox的大小已减小。我已将splitcontainer设置为具有边框,并且它占据了整个表单

这是我启动上面表单的主表单后面的代码

myform.endPointPictureBox1.Width = myform.splitContainer1.Panel1.Width/2;
myform.endPointPictureBox1.Height = myform.splitContainer1.Panel1.Height;
myform.endPointPictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
在第二种形式中,我在Load事件中执行以下操作

splitContainer1.SplitterDistance = endPointPictureBox1.Width;
splitContainer1.Width = endPointPictureBox1.Width + splitContainer1.Panel2.Width;
this.Width = splitContainer1.Width;
更新2

以下是执行此操作所需的代码:

private void button1_Click(object sender, EventArgs e)
{
    pictureBox1.Image = Image.FromFile(@"c:\Users\Admin\Desktop\tmp.png");
    if(splitContainer1.Orientation== Orientation.Vertical)
    {
        var prevWidthPanel2 = splitContainer1.Panel2.Width;
        splitContainer1.SplitterDistance = pictureBox1.Image.Width;
        this.Width = (this.Width - splitContainer1.Panel2.Width) + prevWidthPanel2;
        splitContainer1.SplitterDistance = pictureBox1.Width;
    }
}
我是在点击按钮时这样做的,但我认为没有区别。
其结果如下:

单击之前:

单击后:

如果SplitPanel1中的picturebox的大小减小,这如何表示splitcontainer的大小减小?i、 告诉我们更多。。是否使用了AutoSize属性?设置AutoSize=true,
AutoSizeMode=AutoSizeMode.GrowthandShrink
@AlexanderPetrov,方法是设置表单的属性,如您所述,表单会缩小,并且没有可见的控件。@techno如果您不觉得困难,请添加场景的屏幕截图是什么触发图片大小减小的?如果SplitContainer停靠在表单上,表单右侧怎么会有空白?如果表单已停靠,则SplitContainer应完全填充表单。还是你在说第二小组?您需要向我们展示您正在做的事情(屏幕截图将是一个良好的开端)和/或提供一些表单设置代码,以便我们可以复制它。现在还不清楚你想做什么,我不得不修改
pictureBox1.Image.Width
图片bx1。宽度
以使其工作。当图片垂直时,此项工作。。当splitpanel2水平收缩时。@techno我将其设置为pictureBox1.Image.Width,认为您的panel1的宽度必须始终等于图像的宽度,我没有寻找横向的情况下,因为它没有任何关于它的报告question@techno在水平情况下必须有什么行为?我的意思是当图片的宽度和高度大致相等时(如单击前)。。。splitpanel2被picturebox..@techno覆盖,picturebox.SizeMode=PictureBoxSizeMode.StretchImage??