引发表单事件

Raising form event

我发现“Windows Forms App (.NET Core)”项目缺少普通“.NET framework”应用程序的功能。我专门使用 .NET Core 3.1。

我希望能够在对象上引发表单事件,但找不到执行此操作的方法。在我的示例中,我想在 System.Windows.Forms.TextBox 上调用 click。我知道调用 TextBox.Focus() 基本上会模拟行为,但这不是重点。

调用表单应用程序对象的事件处理程序也没有完成这项工作。它只调用我的自定义代码,而不是实际的基本事件处理程序。并且 Control.RaiseEvent 在 .NET 核心中不存在。我也不认为 Control.Invoke 可以完成这项工作,但我还没有测试过。

答案是控件事件可以通过子类控件调用。例如

public class TestPictureBox : PictureBox
{
    public void CallClick(EventArgs e = null) => base.OnClick(e ?? EventArgs.Empty);
    public void CallResize(EventArgs e = null) => base.OnResize(e ?? EventArgs.Empty);
}

使用这些示例函数,您可以引发控件的事件。