我需要确定用户在切换标签时来自哪个标签,将要转到哪个标签,并可能取消切换。我尝试了 Deselecting、Deselected、Selecting、Selected 事件,它们都显示 e.TabPageIndex 与 sender.SelectedIndex 相同。
是否有我可以使用的事件或属性,以便我可以确定这两个方面,或者我是否必须破解一些东西,从一个事件中缓存它并在新事件中使用该值。
我试图避免处理 Deselecting/Deselected 事件并缓存要在 Selecting 事件中使用的值。我已经知道我可以做到这一点,所以我想问是否有更简洁的方法,而不是这样做。
我在 C# 和 VB 中都尝试过,结果相同(不足为奇)。
谢谢。
最佳答案
似乎没有任何一个事件参数会同时包含上一个和当前选项卡的详细信息,因此您需要处理几个事件以进行跟踪。
至少,您需要使用 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
关于c# - 在 WinForms 选项卡控件中,我如何知道您正在从/向哪个选项卡移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1323470/