当用户从一个选项卡切换到另一个选项卡时,如何处理C# WPF中Tab控件中未保存的更改

4urapxun  于 2023-05-19  发布在  C#
关注(0)|答案(1)|浏览(261)

需要用“确定并取消”消息框提示用户。如果用户单击“确定”,则放弃更改并切换到另一个选项卡。如果用户单击“取消”,则应用程序应保留在同一选项卡上,以便用户进行保存。
已尝试使用PreviewMousedown和SelectionChanged事件从代码隐藏解决,但子控件在发生更改时也会触发此事件。观察到子控件事件传播到父选项卡控件。请用代码片段建议如何处理这种情况。

p5fdfcr1

p5fdfcr11#

您可以在代码隐藏中使用TabControl的SelectionChanged事件来跟踪选定的选项卡以及它的更改时间:

class MainWindow
{
   private int selectedIndex = 0;

    private void tabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (e.Source == tabControl)
        {
            Debug.WriteLine("Tab has changed. Previous tab was " + selectedIndex + "; new tab is " + tabControl.SelectedIndex);
            selectedIndex = tabControl.SelectedIndex;
        }
    }
}

检查源是否为TabControl本身(if (e.Source == tabControl)),可确保从正确的源接收事件。
在这种情况下,如果用户希望继续编辑或保存数据,您可以提示用户并切换回原始选项卡。

相关问题