我的用户控制页面中有几个按钮,假设我有带有后退按钮的 btn A、B、C、D、E,用户单击按钮 A,然后用户单击 B,然后用户单击后退按钮,然后页面应该导航到按钮 A. 我怎样才能做到这一点?
基本上我不想浏览器喜欢我的 Windows 应用程序中的返回功能?
你可以这样解决它:
您必须使每个Click
处理程序成为一个独特的方法(没有 lambdas),它在结束之前将自己置于Tag
“返回”按钮的内部。然后你可以Invoke
根据需要。
伪编码示例(只是一个概念验证!)
void ButtonA_Click(object sender, EventArgs e)
{
// Action A
BackButton.Tag = ButtonAClicked;
}
void ButtonB_Click(object sender, EventArgs e)
{
// Action B
BackButton.Tag = ButtonBClicked;
}
void BackButton_Click(object sender, EventArgs e)
{
if (((Button)sender).Tag !=null
this.Invoke(ButtonB.Tag);
}
您实际上不必使用.Tag
,您也可以将其存储在delegate
对象中(以增加解耦)。
如果您有 MDI 表单,您可以实现以下方法...
Private Sub cmdBack_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdBack.Click
Try
Dim PrevForm As Form = Nothing
For Each ChildForm As Form In Me.MdiChildren
If ChildForm.Equals(Me.ActiveMdiChild) Then
If Not IsNothing(PrevForm) Then
Me.ActivateMdiChild(PrevForm)
PrevForm.Focus()
Exit For
End If
End If
PrevForm = ChildForm
Next
PrevForm = Nothing
Catch ex As Exception
End Try
End Sub
和
Private Sub cmdForward_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdForward.Click
Try
Dim NextForm As Form = Nothing
For Each ChildForm As Form In Me.MdiChildren.Reverse
If ChildForm.Equals(Me.ActiveMdiChild) Then
If Not IsNothing(NextForm) Then
Me.ActivateMdiChild(NextForm)
NextForm.Focus()
Exit For
End If
End If
NextForm = ChildForm
Next
NextForm = Nothing
Catch ex As Exception
End Try
End Sub
做同样的事情......这将允许您按照 MDI 子表单层次结构执行您想要的操作。