我不明白为什么WPF用户控件和Windows窗体用户控件的行为不同。我添加了窗口加载的事件,它只显示消息框:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
MessageBox.Show("Main Window Loaded","WPF");
}
我还创建了一个用户控件并将加载的事件添加为:
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
MessageBox.Show("User Control Loaded.","WPF");
}
我已将此用户控件放在主窗口中。
当我启动它时,我同时收到消息框,用户控件以及窗口。
现在,当我将主题从Aero更改为任何高对比度时,再次显示用户控件的消息框。
为什么会这样?为什么这与Windows窗体不同?我应该怎么做以避免多次出现?
Wajeed
答案 0 :(得分:2)
你可以有一个布尔字段,用于存储对话框是否显示的状态。如果您更改主题,UI元素将自然重新加载,事件将再次触发。
if (!_diagWasShown)
{
_diagWasShown = true;
//Show dialogue
}
答案 1 :(得分:1)
你可以创建bool变量,它将指示是否显示MessageBox。
bool isUserMessageBoxShown = false;
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
if (!isUserMessageBoxShown)
{
MessageBox.Show("User Control Loaded.","WPF");
isUserMessageBoxShown = true;
}
}