需要用“确定并取消”消息框提示用户。如果用户单击“确定”,则放弃更改并切换到另一个选项卡。如果用户单击“取消”,则应用程序应保留在同一选项卡上,以便用户进行保存。已尝试使用PreviewMousedown和SelectionChanged事件从代码隐藏解决,但子控件在发生更改时也会触发此事件。观察到子控件事件传播到父选项卡控件。请用代码片段建议如何处理这种情况。
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)),可确保从正确的源接收事件。在这种情况下,如果用户希望继续编辑或保存数据,您可以提示用户并切换回原始选项卡。
if (e.Source == tabControl)
1条答案
按热度按时间p5fdfcr11#
您可以在代码隐藏中使用TabControl的SelectionChanged事件来跟踪选定的选项卡以及它的更改时间:
检查源是否为TabControl本身(
if (e.Source == tabControl)
),可确保从正确的源接收事件。在这种情况下,如果用户希望继续编辑或保存数据,您可以提示用户并切换回原始选项卡。