我在设计时在 UserControl 中添加了一个面板。
然后,我将此控件添加到表单中。
我想在控件获得焦点时显示焦点虚线边框。
不幸的是,面板中的 Enter
事件永远不会触发。只有当我单击用户控件本身时,我才会起火。
扩展这个问题。如何将事件从用户控件内部的控件转发到基本用户控件? Hans Passant 在 this 中的评论问题表明默认情况下事件将转发给其直接父级。我没有更改该控件的任何属性。我究竟做错了什么?我需要在每个控件上更改一个明显的属性,以强制它转发未处理的事件吗?
我正在使用 DevExpress
控件,但此行为在 Windows WinForms
控件中是相同的。
编辑:我知道该面板可能无法获得焦点。如果这是真的,我如何将每个鼠标事件转发到父控件?
最佳答案
根据您的评论,从 UserControl 内部处理面板的 MouseDown 事件并将焦点设置到父控件:
public UserControl1() {
InitializeComponent();
panel1.MouseDown += new MouseEventHandler(panel1_MouseDown);
}
void panel1_MouseDown(object sender, MouseEventArgs e) {
if (!this.Focused)
this.Focus();
}
关于c# - 输入事件未在用户控件内的面板中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10386783/