• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

自定义控件,如何判断是否处于窗体初始化过程?

皮特胖胖 2015-10-21 02:10:59
一个自定义控件包含多个属性,该控件需要在设计窗体时候添加到窗体中,并且它的属性需要在设计器中显示以便修改初始值,实际运行中修改这些属性值需要引发一些繁琐的操作。
问题:如何使此控件所在窗体初始化完成之前,不触发这些繁琐的操作?
目前我已经知道 this.DesignMode 可以判断是否处于IDE设计模式,那么如何判断是否处于其所在窗体的初始化过程呢?
...全文
175 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
E次奥 2015-10-24
引用 8 楼 hironpan 的回复:
[quote=引用 7 楼 porenasckx 的回复:] 感觉控件设计有问题了 控件基本不会有任何繁琐操作的,繁琐的操作应该留出事件 让引用控件的窗体去实现事件,在事件中进行繁琐操作 这样就不用考录什么初始化的时候各种判断了
对,我就是在属性变更的时候触发一个自定义事件的,在事件过程中处理一些复杂操作。。 我觉得还是需要考虑初始化判断的,在窗体初始化过程中,会修改自定义控件的属性值,同样会触发事件。 [/quote] 在事件实现的时候,先判断IsLoaded属性
回复
皮特胖胖 2015-10-21
引用 1 楼 qldsrx 的回复:
试试Load事件里设置一个局部变量的值来判断,完成初始化时会引发这个Load事件的。
只能这样了吗,有没有其他方法呢?
回复
皮特胖胖 2015-10-21
引用 7 楼 porenasckx 的回复:
感觉控件设计有问题了 控件基本不会有任何繁琐操作的,繁琐的操作应该留出事件 让引用控件的窗体去实现事件,在事件中进行繁琐操作 这样就不用考录什么初始化的时候各种判断了
对,我就是在属性变更的时候触发一个自定义事件的,在事件过程中处理一些复杂操作。。 我觉得还是需要考虑初始化判断的,在窗体初始化过程中,会修改自定义控件的属性值,同样会触发事件。
回复
qldsrx 2015-10-21
试试Load事件里设置一个局部变量的值来判断,完成初始化时会引发这个Load事件的。
回复
E次奥 2015-10-21
感觉控件设计有问题了 控件基本不会有任何繁琐操作的,繁琐的操作应该留出事件 让引用控件的窗体去实现事件,在事件中进行繁琐操作 这样就不用考录什么初始化的时候各种判断了
回复
crystal_lz 2015-10-21
问题:如何使此控件所在窗体初始化完成之前,不触发这些繁琐的操作? 窗体都还没有初始化 也就是说那个时候 也许你的控件 根本对于窗体来说不存在 而且 是什么样子的操作 非要让你关系到窗体初始化的前后?还是说 逻辑上处理本身就不合理? 你控件.Parent 可以得到你控件所在的上层容器 当 xx.Parent.Parent....Parent = null 时候 就说明前一个Parent是窗体了 得到窗体了 你自己再从窗体中获取一些信息吧
回复
powerat123 2015-10-21
你创建的自定义的控件应该是继承UserControl, 那么在你进入设计界面 打开工具箱时,工具箱应该会出现自定义组件,把自定义的控件拖到设计界面修改属性就可以了, 这部分修改是在界面的构造界面的方法里实现的,此时事件不会触发,你最好把事件的注册写在这个控件属性设置的最后面。 还有一个方法就是如果是特殊的需要在加载界面重新赋值,而不想触发相应事件的,就全局加一个Isload变量,进Load加载改为true,完成加载后置为false,然后在事件最开始做这个参数判断就可以了
回复
本拉灯 2015-10-21
只能这样
回复
相关推荐
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2015-10-21 02:10
社区公告

让您成为最强悍的C#开发者