表单上的文本框定位问题大于解决方案

时间:2016-03-16 16:59:05

标签: c# winforms

我有这种形式,在1920 x 1080分辨率下工作得非常好(主要是因为我使用该分辨率)。我从数据库(标签和文本框)中读取有关控件的信息。此信息告诉我放置控件的位置。就像我说的,1920 x 1080一切都正确放置。当我下载分辨率时,表单现在大于分辨率,所以我添加了滚动条。问题是控件的放置就好像屏幕上可见的表格就是这样。因此,如果我将文本框放置在较低分辨率的表单上的位置(4,90),则可以将其放置在(100,90)处。 Y coord很好,X coord不是。

1 个答案:

答案 0 :(得分:0)

虽然在这种情况下TableLayoutPanels看起来非常好,但是基本上完全重做我已经完成的工作将是一个完全的麻烦和浪费时间。如果我已经开始新鲜,我可能会使用TableLayoutPanels。相反,我所做的是,因为Form大于分辨率,我将表单AutoScroll转换为true(我在问题中说过)。然后我将AutoScrollPosition设置为(0,0) form_shown,这使得水平的一个向左移动而垂直的一个向上移动...

this.AutoScrollPosition = new Point(0,0);

由于控制信息是基于它们在屏幕上的位置,我只是强制将窗体的左上角放在屏幕的左上角而不是关闭。我还必须覆盖ScrollToControl。每次放置一个控件时,它都会重置回中心,并会使放置混乱。所以我添加了这个......

protected override Point ScrollToControl(Control activeControl)
    {
        return this.AutoScrollPosition;
    }