我在UserControl i设计时添加了一个Panel。
然后,我将此控件添加到表单中。
我希望在控件具有焦点时显示焦点虚线边框。
不幸的是,面板中的Enter
事件永远不会触发。当我点击用户控件本身时,我才会生火。
扩展这个问题。如何将事件从用户控件内的控件转发到基本用户控件? Hans Passant在this问题中发表的评论称,默认情况下事件会转发给他们的直接父母。我没有改变任何控件的属性。我究竟做错了什么?我是否需要在每个控件上更改一个明显的属性,以强制它转发未处理的事件?
我正在使用DevExpress
控件,但这种行为在Windows WinForms
控件中是相同的。
编辑:我了解该小组可能无法获得焦点。如果是这样,我如何将每个鼠标事件转发到父控件?
答案 0 :(得分:2)
根据您的评论,从UserControl内部处理面板的MouseDown事件并将焦点设置为父控件:
public UserControl1() {
InitializeComponent();
panel1.MouseDown += new MouseEventHandler(panel1_MouseDown);
}
void panel1_MouseDown(object sender, MouseEventArgs e) {
if (!this.Focused)
this.Focus();
}
答案 1 :(得分:0)
在面板的MouseClick事件上使用panel1.Select(),您将能够触发panel1.Enter和panel1.Leave