-2

我的用户控制页面中有几个按钮,假设我有带有后退按钮的 btn A、B、C、D、E,用户单击按钮 A,然后用户单击 B,然后用户单击后退按钮,然后页面应该导航到按钮 A. 我怎样才能做到这一点?

基本上我不想浏览器喜欢我的 Windows 应用程序中的返回功能?

4

2 回答 2

0

你可以这样解决它:

您必须使每个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对象中(以增加解耦)。

于 2012-09-10T07:59:26.587 回答
0

如果您有 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 子表单层次结构执行您想要的操作。

于 2012-09-10T08:03:08.543 回答