|
1
63
避免使用MessageBox.Show()对此进行调试。它泵送一个消息循环,干扰正常的事件流。这个 负载 事件由Windows在窗口变为可见之前发送WM_SHOWWINDOW消息触发。“您的窗口现在已完全显示”没有窗口通知,因此WF设计师想出了一个技巧来生成 事件它们使用Control.BeginInvoke(),确保在程序再次空闲并重新进入消息循环时调用OnShown()方法。 之前 显示窗口。 除了MessageBox之外,还有很多其他方法可以获得诊断。Debug.Print()和Console.WriteLine()非常方便,它们的输出将被发送到 Visual Studio Output Window breakpoint 我也能创造奇迹。 |
|
|
2
20
这是我追踪的事件顺序。这可能会帮助其他人决定如何调用或设置自定义事件处理
|
|
|
3
8
这个
为了澄清,这里有一个例子。考虑具有默认大小的窗体。
|
|
|
4
2
好的,我想我已经弄清楚了现在到底发生了什么,以及我的困惑是从哪里来的(尽管不是这样) 为什么? 它的行为就是这样)。看起来显示的事件实际上发生了 鉴于此代码:
没有一个 在这些情况下,屏幕上实际可见的形式(已绘制)。 做 出现在屏幕上 之前 此时会出现“输入显示”消息。它似乎是在它真正反对的base OnLoad调用之后执行的代码。 |
|
|
5
1
使用空项目执行快速测试:
|
|
6
0
我只是在显示之前检查并加载火。 你的方法显然有问题。 |