无法在用户控件中获取 KeyPressEventHandler

本文关键字:获取 KeyPressEventHandler 控件 用户 | 更新日期: 2023-09-27 18:31:11

来自我看到的有关如何创建键盘用户控件的网站 单击此处获取链接

.我成功地在工具中添加了控件。,然后在表单 UI 中拖动一个。当我开始点击数字时。提升按钮被触发:

private void btn1_click(object sender,eventargs e)
  {
      RaiseButton('1');
  }

和在其他用户控件上。有这个方法

public event KeyPressHandler IsPressed;
public void RaiseButton(char Tosend)
{
    KeyPressEventHandler handle = IsPressed;
    handle(this,new KeypressEventArgs(Tosend));
}

类按键处理程序被压出的值为空 所以它不能写入文本框。现在我的问题是,我是否错过了使按键事件处理程序为空的东西?

请告知谢谢

无法在用户控件中获取 KeyPressEventHandler

IsPressed 事件为 null,因为没有为其注册任何内容。注册该事件后,它将不再为空。首先检查事件是否为 null。此外,您无需将其分配给变量。

public void RaiseButton(char Tosend)
{
    if (IsPressed != null)
    {
        IsPressed(this,txtbox.text);
    }
}

我现在解决了。我太愚蠢了,我在窗体中使用的事件与我在用户控件中使用的事件不同。用户控件中的 public event KeyPressEventHandler IsPressed 事件也必须在窗体中使用。为了能够注册这个,在您的窗体上,您要在其中使用该控件。单击用户控件并查看事件属性,或者仅单击属性中的雷声符号。寻找事件被压制,现在你很好去。双击并输入要为事件执行的代码。@wlemond谢谢你给我举个例子。

干杯:)