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

皮特胖胖 2015-10-21 02:10:59
一个自定义控件包含多个属性,该控件需要在设计窗体时候添加到窗体中,并且它的属性需要在设计器中显示以便修改初始值,实际运行中修改这些属性值需要引发一些繁琐的操作。
问题:如何使此控件所在窗体初始化完成之前,不触发这些繁琐的操作?
目前我已经知道 this.DesignMode 可以判断是否处于IDE设计模式,那么如何判断是否处于其所在窗体的初始化过程呢?
...全文
302 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
只能这样

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧