C# 通过远程桌面查看表单时,表单最大化

C# 通过远程桌面查看表单时,表单最大化,c#,winforms,remote-desktop,C#,Winforms,Remote Desktop,我已经为某种机器编写了HMI(人机界面)程序。 该程序运行在带有“Windows标准嵌入式7”的触摸面板上。 我想这和我的问题没有关系,因为它是Windows7的嵌入式版本 我的程序的主窗体的WindowState设置为Normal,设置的大小与触摸面板的分辨率相匹配(1280x800) FormBorderStyle设置为None StartPosition设置为CenterScreen 问题是: 当直接在触摸屏上启动程序时,程序按其应有的方式显示,从上/左到右/下完全填满屏幕。这没关系

我已经为某种机器编写了HMI(人机界面)程序。 该程序运行在带有“Windows标准嵌入式7”的触摸面板上。 我想这和我的问题没有关系,因为它是Windows7的嵌入式版本

  • 我的程序的主窗体的
    WindowState
    设置为
    Normal
    ,设置的大小与触摸面板的分辨率相匹配(1280x800)
  • FormBorderStyle
    设置为
    None
  • StartPosition
    设置为
    CenterScreen
问题是:

  • 当直接在触摸屏上启动程序时,程序按其应有的方式显示,从上/左到右/下完全填满屏幕。这没关系

  • 当程序不运行时,你通过远程桌面登录到触摸屏(用较大的屏幕,比如说1920x1200),然后启动程序(通过RDP会话),程序也按预期启动,显示在屏幕中部,大小1280x800。这没关系

  • 当程序运行时通过rdp登录时,程序显示为最大化,填满整个屏幕(1920x1200)。这不好,因为我的程序的整个布局是为1280x800制作的


有人知道我的程序为什么会这样运行吗?或者这个问题与rdp会话有关吗?

这可能是因为系统试图保持windows布局与屏幕边框相对。我在一些应用程序中注意到了这几次。如果应用程序没有最大化,但在使用更高分辨率进行RDPing后,它会占据100%的屏幕宽度,那么它会保持100%


如果要防止出现这种情况,可以尝试在表单构造函数中将
MinimumSize
maxiumsize
设置为1280x800。它应该可以工作

有趣的测试:当您对已经运行的应用程序进行RDP时,
SizeChanged
事件是否会触发?如果是的话。。您可以订阅并重新调整表单大小。欢迎使用StackOverflow!我冒昧地修改了一下你的帖子,以便更好地使用格式。您可以通过单击我名字上方的时间来查看我修改的内容。如果您觉得您的帖子更好,或者您想进一步改进/更改,请单击左侧的
编辑
按钮进行修改。感谢您的评论/欢迎。哦,点击“回车”立即发布评论。。。我将rdp连接的速度设置从低带宽更改为高带宽,现在问题消失了。不幸的是,我无法重现这个问题,因为当再次将带宽设置为较低时,它不会再次出现。我将在触摸屏一打开(面板安装在另一个位置)就关闭触摸屏的电源,以尝试重现问题。您是否尝试过在本地运行该程序并在其运行时更改桌面分辨率?问题发生了吗?我会让线程一直打开,直到我完成当前正在处理的项目,因为我在这个项目中使用相同的程序库。如果我再也看不到这个问题,它一定是通过更新Visual Studio或Windows来解决的。顺便说一句,有意思的评论。