现象:
- A , B 两个画面
- 全部继承自同一个 form 。
- FormClosing 方法一致。
- Designer 内容一致
- A 画面里面有一个自定义的日历控件(日期控件+文本框控件) A1
- B 画面里面有一个自定义的日历控件(日期控件+文本框控件) B1
- A1,B1 的类型,加载方式完全一致
诡异的地方来了
- A 画面焦点在 A1 上的时候,点击右上角的 [ X ] 钮,不走 A1 的 Validated 事件,直接走 FormClosing 事件
- B 画面焦点在 B1 上的时候,点击右上角的 [ X ] 钮,执行 B1 的 Validated 事件,再走 FormClosing 事件
#做过如下测试
- A 画面上加 B1 控件,点击 [ X ] 钮,一样不走 B1 的 Validated 事件,直接走 FormClosing
- B 画面上加 A1 控件,点击 [ X ] 钮,走 A1 的 Validated 事件,再走 FormClosing
- A 画面上加新建的 C1 控件,点击 [ X ] 钮,不执行 C1 的 Validated 事件,直接执行 FormClosing
- B 画面上加新建的 D1 控件,点击 [ X ] 钮,执行 C1 的 Validated 事件,再执行 FormClosing
限于保密原因,没办法贴代码。只能写这样的现象。我现在可以用重写 WndProc 的方法来控制 Validated 执行不执行,但是对于这样的现象很好奇,想请问各位,发生这样的现象可能的原因在什么地方。做什么样的实验可以证实。