如何在WinForms选项卡控件中指出要从哪个选项卡移动到哪个选项卡?

Ric*_*tad 7 .net c# vb.net tabcontrol winforms

我需要确定用户来自哪个选项卡,以及切换选项卡时可能取消切换的选项卡.我尝试了取消选择,取消选择,选择,选定事件,并且所有这些事件都显示e.TabPageIndex与sender.SelectedIndex相同.

是否存在可以使用的事件或属性,以便我可以确定其中的两个方面,或者我是否必须通过从一个事件缓存它并在新事件中使用该值来破解某些内容.

我试图避免处理取消选择/取消选择的事件并缓存要在选择事件中使用的值.我已经知道我可以做到这一点,所以我问是否有一种更清洁的方式,而不是这样做.

我在C#和VB中都尝试过,结果相同(毫不奇怪).

谢谢.

STW*_*STW 9

它看起来不像任何一个事件参数将包含前一个和当前选项卡的详细信息,因此您需要处理几个事件以跟踪.

至少,您需要使用该Deselected事件来存储对先前选择的选项卡的引用.您始终可以在TabControl中查询其当前选项卡.要进一步拉伸,您还可以处理Selected事件以跟踪当前选项卡.

Option Strict On
Option Explicit On

Public Class Form1

    Private PreviousTab As TabPage
    Private CurrentTab As TabPage

    Private Sub TabControl1_Deselected(ByVal sender As Object, ByVal e As System.Windows.Forms.TabControlEventArgs) Handles TabControl1.Deselected
        PreviousTab = e.TabPage
        Debug.WriteLine("Deselected: " + e.TabPage.Name)
    End Sub

    Private Sub TabControl1_Selected(ByVal sender As Object, ByVal e As System.Windows.Forms.TabControlEventArgs) Handles TabControl1.Selected
        CurrentTab = e.TabPage
        Debug.WriteLine("Selected: " + e.TabPage.Name)
    End Sub

    Private Sub TabControl1_Selecting(ByVal sender As Object, ByVal e As System.Windows.Forms.TabControlCancelEventArgs) Handles TabControl1.Selecting
        If CurrentTab Is Nothing Then Return
        Debug.WriteLine(String.Format("Proposed change from {0} to {1}", CurrentTab.Name, e.TabPage.Name))
    End Sub

End Class
Run Code Online (Sandbox Code Playgroud)