c# - 让 SetDesktopBounds 坚持下去

标签 c# winforms

我在刚刚创建但未显示的窗体上调用 System.Windows.Forms ... SetDesktopBounds(x, y, width, height)。当我显示表单时,它不会转到我的 SetDesktopBounds 位置,而是显示在其他地方。

如果我显示窗体,然后设置桌面边界,然后隐藏它...它在我下次显示它时出现在该位置。有人知道这里发生了什么吗?我不想事先做一个 Show,因为在我设置它时你会看到表格的闪烁。

在调用 SetDesktopBounds 之前调用 Activate 和/或 CreateControl 也不起作用。

谢谢!

最佳答案

如果在窗体的 Load 事件触发之前调用它,您将不会得到令人满意的结果。窗口的实际大小直到那时才为人所知,用户首选项和重新缩放将在创建 native 窗口时生效。如果您在 Load 之后执行此操作,则重新定位将可见。所以这是最好的:

    static void Main() {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        var main = new Form1();
        main.Load += delegate { main.SetDesktopBounds(100, 100, 300, 300);  };
        Application.Run(main);
    }

关于c# - 让 SetDesktopBounds 坚持下去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8498246/

相关文章:

c# - 自动转义文本框中输入的特殊字符

c# - 如何视觉上连接2个圈子?

c# - 在 C# 中重用或处理自定义字体的有效方法

c# - 为什么 NUnit Android Test Runner 中的断言等于 0(零)?

c# - 如何使用 google-diff-match-patch C# 库?

c# - ASP.NET:创建同一网站的多个版本

c# - 检测光驱中的 cd/dvd 并在窗口媒体播放器上播放

c# - 需要在命令行上 msbuild 低版本的 C# 项目,没有 Visual Studio

c# - CLR 如何优化属性引用?

c# - 在 iTextSharp 中的两个表之间添加空间