Событие TabCard, когда пользователь намерен изменить вкладку - PullRequest
0 голосов
/ 25 апреля 2018

Вероятно, простой, но не может определить правильное событие:

У меня есть vb.net WinForm с TabControl. На каждом TabPage пользователь может вводить / изменять некоторые данные, а затем (надеюсь) сохранять их.

Чтобы сохранить вещи в чистоте, я хочу проверить, есть ли несохраненные данные, когда пользователь меняет вкладки (и удаляет их, если они не сохранены).

Я ищу лучшее событие на TabCard для этого. Есть TabControl1.Selecting, .SelectedIndexChanged и .Selected, которые выглядят многообещающими, но все они стреляют ПОСЛЕ вкладка изменилась.
Если пользователь хочет вернуться, чтобы сохранить данные, мне нужно выяснить, откуда он пришел и снова показать, что TabPage. Кроме того, событие будет пожар снова - неосуществимо.

В заключение: я ищу событие TabControl, которое происходит после того, как пользователь щелкнул другую вкладку, но до того, как карта фактически изменится ...
Или лучше решить эту проблему по-другому.

1 Ответ

0 голосов
/ 25 апреля 2018

Используйте событие выбора. Если вы не хотите менять вкладку, вы можете отменить событие.

'Here's an example class with a tabControl
Public Class Form1

    'this variable stores the currently selected tab
    Private activeTab As TabPage

    'this initializes the activeTab variable
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        activeTab = TabControl1.SelectedTab
    End Sub

    'This checks to see if the tab should change or not
    Private Sub TabControl1_Selecting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TabControlCancelEventArgs) Handles TabControl1.Selecting

        If (MessageBox.Show(String.Format("Return to {0} tab?", activeTab.Name), "TabControl", MessageBoxButtons.OKCancel) = Windows.Forms.DialogResult.OK) Then
            e.Cancel = True
        Else
            activeTab = e.TabPage
        End If

    End Sub

End Class
...