c# - 在 WinForms 选项卡控件中,我如何知道您正在从/向哪个选项卡移动?

标签 c# .net vb.net winforms tabcontrol

我需要确定用户在切换标签时来自哪个标签,将要转到哪个标签,并可能取消切换。我尝试了 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/

相关文章:

c# - 创建注册表项,而不是通常的

wpf - WPF 的平滑视频过渡

c# - VB param ( , ) 中的奇怪参数转换为 C#

vb.net - Lambda 和 VB.NET

c# - 流媒体库 FFmpeg、avlib、libav 等

c# - ASP.Net MVC 5 Entity Framework 选择在哪里?

c# - 工作流基础 4.5 "Expression Activity type ' CSharpValue` 1' requires compilation in order to run."

.net - ASP.NET MVC 3 模型绑定(bind)资源

c# - Xamarin 的 YouTube API

c# - 使用接口(interface) - 设计模式方面