我正在使用TabItem的GetFocus函数。我有不同的TabItems,当我在其他人之间切换时,它必须弹出一个MessageBox。我使用下面的代码:
TabItem tbi = new TabItem();
tbi.GotFocus += (o, e) =>
{
MessageBox.Show("it pop ups infinitely");
};
如何解决它。是否有可能弹出一次然后控制来自这个功能?我的意思是。 " - =(O,E)"在Messagebox POP UP下面。 (我猜它会无限弹出,因为当我打开TabItem时它会持续打开并继续弹出)。 (请不要建议使用LostFocus)
答案 0 :(得分:3)
这是有道理的,因为MessageBox会获得焦点,当你关闭它时,TabItem会再次获得焦点。也许一个简单的布尔标志可以修复它?
bool focusing = false;
TabItem tbi = new TabItem();
tbi.GotFocus += (o, e) =>
{
if (focusing) {
focusing = false;
return;
}
focusing = true;
MessageBox.Show("it pop ups infinitely");
};
答案 1 :(得分:1)
所以你想在第一次调用它时立即删除它?
RoutedEventHandler handler = null;
handler = (o, e) =>
{
MessageBox.Show("it pop ups infinitely");
tbi.GotFocus -= handler;
};
tbi.GotFocus += handler;