none
FormBorderStyle的奇怪问题

    问题

  • 我在使用Visual Basic 2013编写软件,使用.NET Framework 4.0。

    我想在软件运行的时候,在某些情况下,阻止用户改变窗体的尺寸。为此,我让程序在运行的时候把窗体的FormBorderStyle从Sizable改变到FixedSingle。但这会出现奇怪的问题:这个窗体会“抖动”以下,并且它的尺寸似乎会变化。从而,一些Anchor含有Right和Bottom的控件的布局就会出现问题。

    这个问题只会出现在直接运行所生成的.exe文件时(无论是Debug还是Release)。如果从Visual Studio里运行,就没有这个问题。

    这似乎是一个bug。我该怎么解决它?

    2017年4月14日 4:51

全部回复

  • Hi,

    感谢你在MSDN论坛发帖。

    你使用的环境是windows 10,还是windows 7,或者其他版本。

    你能提供一份可以重现问题的demo,到onedrive上面吗? 我们来测试一下是不是bug。

    如果是bug,我们可以提供给connect 网站,微软的工作人员会修复这个bug。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年4月14日 7:59
    版主
  • 你好。

    网上已经有一个demo了。其链接是:

    https://social.msdn.microsoft.com/Forums/vstudio/en-US/1d9c5e41-b732-46f6-9487-e9fce99dad49/formformborderstyle-set-to-fixedsingle-bug?forum=csharpgeneral

    我用的VS是Visual Studio Community 2013,和他的不同,但有同样的问题。

    我用的Windows是Windows 7专业版,.NET Framework的版本是4.0。

    我看了那个帖子及其中的链接。似乎微软确认了这个bug,但不准备修复它。那么,有什么办法可以绕过这个bug吗?比如,有什么办法可以在不修改FormBorderStyle的情况下不让用户改变窗体的尺寸吗?


    • 已编辑 zdprogrammer 2017年4月14日 13:30 补充信息
    2017年4月14日 13:28
  • Hi,

    根据我的查找,没有发现相应的解决方案。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年4月19日 9:04
    版主
  • 方法 1 

    阻止用户改变窗体的尺寸

    private void frmfiverrcomscraper_resizeend(object sender, eventargs e)
    {
        grbsearchresult.width = grbsearchresult.width + this.size.width - oldsearchresultgroupboxsize.width;
    }
     
    private void frmfiverrcomscraper_resizebegin(object sender, eventargs e)
    {
        oldsearchresultgroupboxsize = grbsearchresult.size;
    }
     
    private void frmfiverrcomscraper_sizechanged(object sender, eventargs e)
    {
     
    }

    窗体的这三个事件中,都重设一下大小



                this.ClientSize = new System.Drawing.Size(500, 300); 

     

    方法2  

    1. FormBorderStyle -> FixedSingle.
    2. MaximizeBox -> False.


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2017年4月19日 10:03