【问题标题】:Dynamic scaling of Winform Controls [duplicate]Winform控件的动态缩放[重复]
【发布时间】:2014-08-15 14:38:24
【问题描述】:

简而言之:我有一个 ListView,我想动态地缩放它,使其指向 ListView 所在的容器。我是不是太笨了,看不懂还是没有这个属性?如果没有,有人知道怎么做吗?

【问题讨论】:

  • 锚由于某种原因不起作用,如果我编译,它会在 MessageBox(不是我调用的)中显示类似“错误值”的内容。 Dock 会隐藏我的按钮。 (在那个框之后,锚在VS中再次被移除
  • 不要将所有内容集中在一个面板中。查看 TableLayout 和/或 SplitPanel。它们就是为此而生的。

标签: c# winforms dynamic scaling


【解决方案1】:

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

如果您希望控件填满整个空间,只需将“Dock”设置为居中即可。您还可以将扩展坞设置为其他一些东西。 See Here

【讨论】:

  • 感谢屏幕的详细回答,但由于某种原因它不起作用,它在我没有调用的消息框中显示“错误值”之类的内容
  • 不太确定你在说什么。如果您需要更多帮助,请提供所显示的确切错误消息或您遇到的行为。此外,听起来您有一个自定义错误处理程序,显示该消息框(不是赢表单问题)
  • 嗯,它来自 VS,因为在该错误之后,锚点在属性中被重置。错误显示“Invalid Propertyvalue”-屏幕不会告诉你太多,我的工作室是德语:p
  • @MathiasS。你想把它设置成什么值?
  • 我尝试在每个方向设置锚点,但每次我选择 2 个相反的站点时,都会出现该错误
【解决方案2】:

您也可以像这样在表单上使用 Resize 事件:

    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 ......不过对我来说看起来不错。)

【讨论】:

  • 宽度是表单宽度,你可以把它设为控件所在容器的宽度。
【解决方案3】:

解决方案是将您的控件放入TableLayoutPanel 并将您的ListViewDock 设置为Fill。然后,将TableLayoutPanelDock也设置为Fill,以便根据其父窗体进行调整。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多