Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Winform控件的动态缩放_C#_Winforms_Dynamic_Scaling - Fatal编程技术网

C# Winform控件的动态缩放

C# Winform控件的动态缩放,c#,winforms,dynamic,scaling,C#,Winforms,Dynamic,Scaling,简而言之:我有一个ListView,我想动态地将它扩展到ListView所在的容器中。我是不是太傻了,以至于看不懂,还是这本书没有什么价值?如果没有,有人知道怎么做吗?你要做的是在控件上设置“锚定”。将定位点设置为与希望控件更改大小的方式相对应 如果希望控件填充整个空间,只需将“Dock”设置为居中即可。您还可以将dock设置为其他一些功能 您也可以在表单上使用调整大小事件,如下所示: private void Form1_Resize(object sender, EventArgs

简而言之:我有一个ListView,我想动态地将它扩展到ListView所在的容器中。我是不是太傻了,以至于看不懂,还是这本书没有什么价值?如果没有,有人知道怎么做吗?

你要做的是在控件上设置“锚定”。将定位点设置为与希望控件更改大小的方式相对应


如果希望控件填充整个空间,只需将“Dock”设置为居中即可。您还可以将dock设置为其他一些功能

您也可以在表单上使用调整大小事件,如下所示:

    private void Form1_Resize(object sender, EventArgs e)
    {
        int SIDEPAD = 10;
        listBox1.Width = Width / 2;
        listBox1.Height = Height / 2;
        listBox1.Top = (Height - listBox1.Height - button1.Height) / 4;
        listBox1.Left = (Width - listBox1.Width - SIDEPAD) / 2;

        button1.Width = Width / 2;
        button1.Top = ((Height - listBox1.Height - button1.Height) / 4) * 2 + listBox1.Height;
        button1.Left = (Width - listBox1.Width - SIDEPAD) / 2;
    }

这将使按钮和列表框保持等间距。。。这是一种恼人的程序,但它将确保一切看起来总是好的。(Sidepad是表单边框的宽度;我认为它实际上可能是8…但我觉得它看起来不错。)

解决方案是将控件放入
表格布局面板中,并将
列表视图的
停靠设置为
填充
。然后,将
TableLayoutPanel
Dock
也设置为
Fill
,这样它就可以根据父窗体进行调整。

感谢屏幕提供的详细答案,但由于某些原因,它无法工作,它会在消息框中显示类似“错误值”的内容,而我并没有真正确定您在这里谈论的内容。如果您需要更多帮助,请提供显示的确切错误消息或您遇到的行为。此外,听起来您有一个自定义错误处理程序,它显示消息框(不是win forms问题),它来自VS,因为在该错误之后,锚在属性中重置。错误显示为“无效属性值”-屏幕不会告诉您太多,我的工作室在德语上:p@MathiasS. 你试图将其设置为什么值?我试图在每个方向上设置锚定,但每次我选择两个相反的站点时,它都会告诉我错误锚定由于某种原因不起作用,如果我编译,它会在MessageBox(我没有调用)中显示类似“错误值”的内容。Dock会把我的纽扣藏起来。(在该框之后,在VS中再次移除锚点。不要将其全部集中在一个面板中。查看TableLayout和/或SplitPanel。它们是为此而创建的。相关:宽度是表单宽度,您可以将其设置为控件所在容器的宽度。