Winforms 如何以编程方式调用事件处理程序

Winforms 如何以编程方式调用事件处理程序,winforms,Winforms,在winforms应用程序中,我有一个datagridview的事件处理程序CellEndEdit,当我在datagridview中完成编写内容时运行。现在我想在单击按钮时调用此事件。我怎样才能做到这一点?谢谢。让我们看看常规事件处理程序。(顺便说一句,您没有指定C#或VB,所以我将使用VB) 此子例程的名称为“Button1_Click”,它包含2个参数,类型为Object和System.EventArgs 通常,系统只调用事件处理程序,但没有理由不能自己调用事件处理程序 挑战在于,如果事件处

winforms
应用程序中,我有一个
datagridview
的事件处理程序
CellEndEdit
,当我在
datagridview
中完成编写内容时运行。现在我想在单击按钮时调用此事件。我怎样才能做到这一点?谢谢。

让我们看看常规事件处理程序。(顺便说一句,您没有指定C#或VB,所以我将使用VB)

此子例程的名称为“Button1_Click”,它包含2个参数,类型为Object和System.EventArgs

通常,系统只调用事件处理程序,但没有理由不能自己调用事件处理程序

挑战在于,如果事件处理程序中的代码依赖于发送方和事件参数,则很难复制这些参数,但如果代码不依赖于这些参数,则只需为每个参数传递Nothing或null

但是,如果有常见的行为,我将定义一个单独的函数,并从事件处理程序和按钮单击调用该函数

例如:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    rgv_CellEndEdit(Nothing, Nothing)
End Sub

Private Sub rgv_CellEndEdit(ByVal sender As System.Object, ByVal e As Telerik.WinControls.UI.GridViewCellEventArgs) Handles rgv.CellEndEdit
    FillGridLine()
    If rgv.CurrentCell.ColumnInfo.Name = "ProductId" And rgv.CurrentCell.Value Is Nothing And IsDBNull(rgv.CurrentCell.Value) = True Then
        rgv.CurrentRow = rgv.Rows(rgv.CurrentRow.Index)
        rgv.CurrentColumn = rgv.Columns("ProductId")

    End If
End Sub

只需为按钮单击添加一个处理程序,然后像其他任何方法一样调用
CellEndEdit
。感谢您提供使用信息,但请特别关注我的问题。我需要一个示例代码。例如,我有一个方法或子例程,假设有20行代码,在这些代码行之间我需要调用或运行CellEndEdit事件。我怎么打电话?很抱歉,我没有理解你之前的回答,我认为这不能满足我的需要,谢谢。那么我们发布一些代码吧。我提供了大量信息。如果rgv.CurrentCell.ColumnInfo.Name=“ProductId”和rgv.CurrentCell.Value为Nothing,而IsDBNull(rgv.CurrentCell.Value)为Nothing,则私有子rgv_CellEndEdit(发送方为System.Object,e为Telerik.WinControl.UI.GridViewCellEventArgs)处理rgv.CellEndEdit FillGridLine()=True然后rgv.CurrentRow=rgv.Rows(rgv.CurrentRow.Index)rgv.CurrentColumn=rgv.Columns(“ProductId”)查看我上面的代码,当我在datagridview中完成编辑时,它总是运行。我想在点击按钮或任何子程序上运行它,谢谢。我编辑了我的答案。最好将代码示例放在最初的帖子中。