我得到了这个问题。
我的应用程序有一个标签,我检查配置是否保存:如果没有保存,我显示一个消息,并强制选择标签,以管理用户在实际标签。
这是我的代码:
TAB_PAGES fPageSelected = TAB_PAGES.NONE;
private void TcMain_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
bool forceSelection = false;
if (e.OriginalSource == tcMain)
{
if (fPageSelected != (TAB_PAGES)tcMain.SelectedIndex)
{
if (!tiConfig.IsSelected)
{
// is this case!
if (cfg.CheckControlsChanged())
{
ShowMessage("Warning", "Please save the controls setup!");
e.Handled = true;
forceSelection = true;
}
}
}
fPageSelected = (TAB_PAGES)tcMain.SelectedIndex;
}
if (forceSelection)
{
tiConfig.IsSelected = true;
fPageSelected = TAB_PAGES.CONFIG;
}
}
奇怪的行为是:第一次,我改变了我的配置,按了另一个标签。我改变了我的配置,按下另一个标签项,上面的代码工作,显示消息并结束... ...
但第二次,如果我重新按另一个标签项,它又会显示消息,但事件在循环中进行:在我的例子中,tcConfig是索引1:如果我按索引2,它被无限次地用以下方法发射 SelectedIndex = 2
任何想法如何解决这个问题?
谢谢