2011-09-28 62 views
0

我不明白为什么WPF用户控件和Windows窗体用户控件的行为是不同的。我添加窗口中加载事件,这只是显示信息框:更改主题调用UserControl_Loaded事件

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

回答

1

您可以创建bool变量,它将指示是否显示MessageBox。

bool isUserMessageBoxShown = false; 
private void UserControl_Loaded(object sender, RoutedEventArgs e) 
{ 
    if (!isUserMessageBoxShown) 
    { 
     MessageBox.Show("User Control Loaded.","WPF"); 
     isUserMessageBoxShown = true; 
    } 
} 
2

你可以有存储的又与否是否所示的对话框状态的布尔字段。如果您更改主题,UI元素将重新加载,所以自然会再次触发事件。

if (!_diagWasShown) 
{ 
    _diagWasShown = true; 
    //Show dialogue 
}