问题:winform程序启动后自动最小化

问题:winform程序启动后自动最小化

本来默认情况下winform程序调试,运行,双击exe直接显示界面了。但是今天碰到了双击exe之后界面直接最小化到任务栏的问题。

我排查的思路是:首先程序有多个Form,Program.cs里面new的是Form1打开就最小化。我尝试把Form1替换为其他的Form(比如Form2....),结果是:Form2最小化,Form3,Form4等正常,所有问题肯定在Form2里面

这里说一下为什么,Program.cs里面new的是Form1也成了最小化,因为这个程序Form1是其他所有Form的Parent Form。

接下来,看Form2的构造函数里面的内容,依次注释InitializeComponent等一些影响程序界面元素的函数。结果没发现问题。。

接下来来到了UpdateDeviceList()函数,在注释一下语句后,程序正常显示:

DriveDetector dd = new DriveDetector();
dd.DeviceArrived += new DriveDetectorEventHandler(OnDriveArrived);
dd.DeviceRemoved += new DriveDetectorEventHandler(OnDriveRemoved);

DriveDetector是别人写的检查pnp设备插入,原理是重载WndProc,所以必须要有一个Form,所以DriverDetector的构造函数在没有指定窗口的情况下自动简历一个隐藏窗口:this.Visible = false;,导致程序启动后最小化,通过指定窗口为this后,问题解决。

DriveDetector dd = new DriveDetector(this);

标签: C语言, WinForms

添加新评论