引发表单事件
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);
}
使用这些示例函数,您可以引发控件的事件。
我发现“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);
}
使用这些示例函数,您可以引发控件的事件。