当前位置:  开发笔记 > 开发工具 > 正文

如何从WinForms应用程序中的用户控件上的子控件中获取事件?

如何解决《如何从WinForms应用程序中的用户控件上的子控件中获取事件?》经验,为你挑选了1个好方法。

有没有办法让主窗体能够拦截在用户控件上的子控件上触发的事件?

我在我的应用程序的主窗体中嵌入了自定义用户控件.该控件包含操作数据的各种子控件,这些子控件本身由主窗体上的其他控件显示.我想要的是,如果主要表单可以在用户更改子控件时以某种方式通知,那么我可以在其他地方更新数据和相应的显示.

现在,我在作弊.我有一个代表连接到子控件的焦点离开事件.此委托更改了我未在其他地方使用的用户控件的属性(在此原因中,CausesValidation).然后,我在主窗体上定义了一个委托,用于何时更改用户控件的CausesValidation属性,然后指示应用程序更新数据并显示.

出现问题是因为我还有一个委托设置焦点何时离开用户控件,因为我需要验证用户控件中的字段,然后才允许用户执行任何其他操作.但是,如果用户只是在子控件之间切换,我不想验证,因为它们可能没有完成编辑.

基本上,我希望在用户切换子控件或离开用户控件但不验证时更新数据.当用户离开控件时,我想更新并验证.现在,离开用户控件会导致验证两次.



1> Eric Schoono..:

最佳做法是将事件暴露UserControl在父泡沫表格的事件上.我已经为你做了一个例子.以下是此示例提供的内容的说明.

UserControl1

创建一个UserControlTextBox1

UserControl被叫方注册公共事件ControlChanged

UserControl寄存器中,TextBox1TextChangedEvent 的事件处理程序

TextChangeEvent处理程序函数中,我将ControlChanged事件调用为冒泡到父表单

Form1

删除UserControl1设计器上的实例

UserControl1for MouseLeave和for 上注册一个事件处理程序ControlChanged

这是一个屏幕截图,说明ControlChanged我在其上定义的事件UserControl可通过父Windows窗体上的Visual Studio中的UX获得.

用户控制的事件处理程序http://friendfeed.s3.amazonaws.com/0d5a3968cb785625c8afb3974a8d84894c476291

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有