gpt4 book ai didi

c# - 短暂延迟后消息框自动关闭

转载 作者:太空狗 更新时间:2023-10-30 00:40:43 25 4
gpt4 key购买 nike

我有一个 wpf 应用程序,我需要显示一个消息框,问题是消息框显示了 0.5 秒,甚至没有等待用户单击确定。

主窗口.xaml.cs:

public partial class MainWindow : Window
{
public MainWindow()
{

//verifying application setting file to see if the connection is ok
string pathToApp = System.AppDomain.CurrentDomain.BaseDirectory + "settings.sts";
ApplicationSettings applicationSettings = new ApplicationSettings();
applicationSettings.ServerIp = "127.0.0.1";
applicationSettings.ServerDatabase = "test";
applicationSettings.ServerUserName = "root";
applicationSettings.MakeConnectionString();
foreach (char c in "")
{
applicationSettings.ServerPassword.AppendChar(c);
}



MySqlConnection connection = new MySqlConnection(applicationSettings.ConnectionString);
try
{
connection.Open();
}
catch (Exception e)
{
// here the message box shows for 0.5 second and closes immediately
MessageBox.Show(e.Message);
}
finally
{
connection.Close();
}

//display window
InitializeComponent();

}

如果这与消息框有关系,我还应该使用图像作为初始屏幕。

抱歉,此代码尚未完成。提前致谢

最佳答案

您的问题源于 WPF 的一个已知问题:

首先,它发生在与启动画面一起使用时。如果您没有为消息框指定父级,它会假定初始屏幕是它的父级,因此在初始屏幕关闭时关闭。其次,即使您在 MainWindow 的构造函数中将父窗口指定为 MainWindow,它仍然无法工作,因为 MainWindow 还没有句柄(稍后创建)。

因此,解决方案是将消息框的调用推迟到构造函数之后,并通过将 MainWindow 指定为父窗口。这是修复它的代码:

Dispatcher.BeginInvoke(
new Action(() => MessageBox.Show(this, e.Message)),
DispatcherPriority.ApplicationIdle
);

这是对父/飞溅问题的引用: http://connect.microsoft.com/VisualStudio/feedback/details/381980/wpf-splashscreen-closes-messagebox

关于c# - 短暂延迟后消息框自动关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25064920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com