C# 用户自定义控件事件绑定问题
发布网友
发布时间:2022-05-03 00:07
我来回答
共1个回答
热心网友
时间:2022-06-28 15:25
你引用的那个回答的意思是说,对于winform架构来说,没有事件传播机制(这也是Winform的一个最讨厌的问题),子控件发生的事件,无法直接被父控件感知到。在现代框架下,如WPF,UWP,或基于浏览器的各种Web应用程序,事件传播都是必须原生支持的。如果你确实没有办法使用更新的框架来写用户界面的话,目前的解决方案正如你的那个答案,要在所有子控件的事件发生时,手动触发父控件的相应事件。你可以想象,如果你的控制有好几层的话,那么就只能递归做这件事了。注册子控件事件到父控件的办法基本上是在父控件里这样写:
foreach (var control in this.Controls)
{
((Control)control).Click += new MouseEventHandler(UserControl1_Click);
}
这样等于所有control的click事件都会最终被UserControl1_Click捕获,你把处理程序在写UserControl1_Click就行了。
C# 用户自定义控件事件绑定问题
你引用的那个回答的意思是说,对于winform架构来说,没有事件传播机制(这也是Winform的一个最讨厌的问题),子控件发生的事件,无法直接被父控件感知到。在现代框架下,如WPF,UWP,或基于浏览器的各种Web应用程序,事件传播都是必须原生支持的。如果你确实没有办法使用更新的框架来写用户界面的话,目前的...
C#中怎么为控件事件处理程序添加自定义的参数
1、如果你要使用特殊的事件处理程序的话,你可以重载一下你要使用的控件,在它的OnXxx方法中调用你自己定义的事件处理用的委托。这样,你在使用该控件(你自己重载的)时,就可以按照你自己的意志来传递参数了。2、如果该控件不允许重载,你就只能写一个自定义控件,让后写一系列的自定义事件,把你要...
c#中,用户自定义控件如何继承事件或方法
你想继承哪个控件的?把自定义控件继承自这个控件就OK了。自定义控件必须继承自control控件,但只要派生自control的都可以作为自定义控件的基类的。
C#自定义控件的时候,怎么保留以前控件的某些属性了
如果是前者,你可以在UserControl里面定义一个属性类似如下 public webbrowser Innerwebbrowser { get { return this.webbrowser1;} } 在外部引用:UserControl.Innerwebbrowser.属性
c#中如何取消控件的事件绑定?
你这个委托是动态创建的自定义委托,估计不通过函数、凭几句代码是不可能清除事件的,还是自己编个函数吧。网上有很多,你可以参考这个:这个估计你也看过了,不过确实够精炼了:(需要using system.reflection)void clearevent(control control,string eventname){ if (control == null)return;if (...
c#中自定义控件怎么调用主窗体中的事件
= new Form1();就是这个出的问题,因为你有新创建了一个form,所以你添加的TabPage tbPage = new TabPage();tbPage.Text = "222";form.tabControl1.Controls.Add(tbPage);都进了新的Form里了,但界面展示的Form是没有的,可以在Form里加一个单键,每次单击Button调用这个单键就可创建了 ...
C#自定义控件内的子控件和父控件间事件怎么传递?
在控件UserControl1后台代码中,对每个标签的Click事件编程 public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } private void label1_Click(object sender, EventArgs e) { base.OnClick(e); } private void label2_Cl...
C# 自定义控件添加后的错误 变量“自定义控件名”未声明或赋值_百度知 ...
load事件中不要写复杂的逻辑,特别是需要连接数据库的代码 如果有,加上判断if(!this.DesighMode){} 打开designer模式的debug方法:再用VS打开同样的项目,选择debug-》attach process 选择前面那个VS的进程,然后在原来的VS里面设置断点,再打开designer,就可以调试了,看看到底是哪句出了问题。
c#开发windows窗体,如何让上层控件不截获鼠标事件,交给下层控件来处理...
选中多个控件,然后按住鼠标左键进行同时移动。我给你说说C#程序实现的思路吧:方法是这样的,你在你自定义的用户控件最上方增加一个PictrueBox控件,然后将该控件弄成透明的,pictureBox1.BackColor = Color.Transparent;这样你点击或者移动鼠标,就可以在这个控件上进行响应,从而达到你想要的拖动。
c# 自定义继承Usercontrol的控件,如何通过控件自身方法判断鼠标离开控 ...
不可能不行的,mouse_leave的就是鼠标离开控件触发事件,你是不是搞错了什么,是不是把别的控件的Mouse_leave事件,加到这个上面了。mouse_leave这个事件本身就是获取api鼠标位置,和当前窗体位置和大小,再计算控件相对位置,判断鼠标位置是否在范围内,这肯定没错的,你还是检查下是不是你自己自定义控...