WinForm自定义组件双击事件
明明在自定义组件添加了 默认双击事件,而且在对应参数设置窗体也对组件双击事件进行绑定,但是点击事件还是进入到组件里面的标签。。
鼠标双击 → Label控件(获得焦点和事件) → 事件被Label消费 → 自定义控件收不到事件
解决思路:点击的是父控件中的子控件,那就向子控件中找到他的父控件textSet为止,并且返回父控件
private void Common_ControlDoubleClicked(object sender, EventArgs e){// 如果sender是Label,找到其父控件TextSetTextSet textSet = null;if (sender is TextSet){textSet = sender as TextSet;}else if (sender is Control control){// 向上查找TextSet父控件textSet = FindParentTextSet(control);}if (textSet != null && textSet.BindName != null && textSet.BindName.ToString().Length > 0){FrmMoidify modify = new FrmMoidify(textSet.TitleName,textSet.BindName.ToString(),textSet.CurrentValue);modify.Show();}}private TextSet FindParentTextSet(Control control){Control parent = control.Parent;while (parent != null){if (parent is TextSet textSet){return textSet;}parent = parent.Parent;}return null;}