Vb.net 方法在从其他窗体调用时未正确激发

Vb.net 方法在从其他窗体调用时未正确激发,vb.net,winforms,devexpress,Vb.net,Winforms,Devexpress,我的项目有两个表单(A和B),当加载表单A时,焦点设置为Devexpress存储库文本编辑项 在表单BFormClosing方法期间,将调用表单AbtnRefresh.PerformClick方法 这将填充表适配器等。它还应将焦点移回存储库文本编辑项。如果我实际单击“刷新”按钮,它将按预期工作 无论我如何调用该方法,它都不会移动焦点 方法1 frmFormA.MoveFocus() 方法2 Public Class FormB dim form as FormA = nothing Publ

我的项目有两个表单(A和B),当加载表单A时,焦点设置为Devexpress存储库文本编辑项

在表单B
FormClosing
方法期间,将调用表单A
btnRefresh.PerformClick
方法

这将填充表适配器等。它还应将焦点移回存储库文本编辑项。如果我实际单击“刷新”按钮,它将按预期工作

无论我如何调用该方法,它都不会移动焦点

方法1

frmFormA.MoveFocus()
方法2

Public Class FormB
dim form as FormA = nothing

Public Sub New(ByVal calling As Form)
form = DirectCast(calling, FormA)
End Sub

Private Sub FormB_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
form.btnRefresh.performClick()
End Sub
我没有收到任何错误,并且我可以从
Debug.Print
中看到方法正在以任何方式调用


关于我可以尝试什么有什么进一步的想法吗?

看起来FormB\u FormClosing并不是在处理关闭事件。对不起,我是打印出来的,没有复制它。当您调用performClick时,code.FormB仍处于“活动”状态,因此您还不能更改焦点。FormB是否与ShowDialog一起显示?如果是,请更改该行之后的焦点。PerformClick()不会移动焦点。用鼠标点击按钮就可以了。按钮的Focus()方法可以。最基本的问题是您没有对button对象的引用。通过将FormClosed事件处理程序放入FormA,您的生活将变得更加轻松。拉斯特和汉斯·帕桑,解决了这个问题!非常感谢。