【WinForms】控件事件触发顺序问题
现开发了多窗体程序,在两窗体间切换时,事件触发顺序应该为windowActive,controlActive。我在使用C1TabControl时,发现是先触发SelectionChanged事件,然后再window激活。别的控件事件触发顺序则正常。
请问,如何实现先window激活事件,后SelectionChanged事件?
谢谢! 回复 1楼dafeng520的帖子
dafeng520 你好,
我通过附件 Demo 测试,调用子 Form 时。首先触发 Form2_Activated 事件,然后才触发的 c1DockingTab1_SelectedIndexChanged 事件,所以没能重现你的问题,请参考:
如果不能解决问题,请上传 Demo 到论坛调试。
你好,我的是wpf的例子,你先新增两个窗体,然后测试。 回复 3楼dafeng520的帖子
感谢发送demo,问题正在调查中,明天回复。 回复 3楼dafeng520的帖子
dafeng520 你好,
能否补发图中三个缺少的 DLL:
回复 6楼dafeng520的帖子
dafeng520 你好,
可以通过以下代码判断当前UserControl是否加载完:
private void C1TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (this.IsLoaded)
{
Debug.Print("C1TabControlClicked" + (sender as C1TabControl).SelectedIndex + ":" + title);
}
}
经测试,此方法不能解决问题啊。
WindowActivated:test1848543519
btnClicked:test1848543519
WindowActivated:test1240895648
btnClicked:test1240895648
C1TabControlClicked1:test1848543519
WindowActivated:test1848543519
C1TabControlClicked1:test1240895648
WindowActivated:test1240895648
C1TabControlClicked0:test1848543519
WindowActivated:test1848543519
上面显示出,先触发了窗体事件,后触发控件事件。
下面显示出,在C1TabControl中,是先触发控件事件,后触发了窗体事件。(此处Tab是切换了的)。 回复 8楼dafeng520的帖子
事件触发顺序我们可能没法办法更改。使用 7# 中的代码的作用是判断当前 UC 是否加载完成,如果未加载则不执行C1TabControl_SelectionChanged 中的代码。
附件是我的操作行为,切换 Tab 后并没有触发WindowActivated事件,请查看,看我们操作有哪些不同,我再继续跟踪调查:
你好,你没有理解我的意思,当我打开两个窗口后,先把两个窗体平铺开来,当win1处于激活状态时,直接点击win2里的TabControl控件,而不是先使win2激活。
页:
[1]
2