c# - 输入事件未在用户控件内的面板中触发

标签 c# winforms events user-controls

我在设计时在 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/

相关文章:

c# - 在 winforms 中使用按钮移动水平滚动条或列表框

java - 从 Tapestry 组件监听 spring 事件

c# - 使用 C# 通过代码固定应用程序时,在应用程序列表页面上停用 ' pin to start '?

c# - 如何用手指在 Canvas 上绘画?

C# 控制台应用程序身份验证 session

c# - 我需要取消订阅我的表格中的事件吗?

c# - App.Config 连接字符串

c# - EF4 复杂的 Select() : Return IEnumerable or IEnumerable<MyCustomDto> from Business Tier?

c# - 为什么我的 C# Remoting 对象超时,即使 Lifetime 返回 null?

iphone - 在 iPhone 之间发送事件