【问题标题】:Custom MessageBox using Window使用 Window 自定义 MessageBox
【发布时间】:2014-02-04 13:14:23
【问题描述】:

关于下面的代码。

如果我使用内置的MessageBox,那么在显示下一个之前必须关闭上一个MessageBox。

如何使用 Window 实现此目的,以便创建自定义消息框?我尝试使用 ShowDialog 方法,但是虽然这确实会创建模态窗口,但它仍然会同时级联显示它们。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        Loaded += new RoutedEventHandler(MainWindow_Loaded);
    }

    void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        for (int i = 0; i < 3; ++i)
        {
            Dispatcher.BeginInvoke(new Action(() => ShowDialog2()));
        }
    }

    void ShowDialog2()
    {
        //MessageBox.Show("A message");

        Window w = new Window() { Width = 200, Height = 200, Content = "SomeText" };
        w.ShowDialog();
    }
}

【问题讨论】:

    标签: wpf custom-controls messagebox showdialog


    【解决方案1】:

    使用ShowDialog 打开第一个窗口实例,并使用Show 方法打开后续窗口实例。

    Show 打开一个非模态窗口,而 ShowDialog 打开一个模态窗口。

    【讨论】:

    • 可能我没有解释的太好,但是我希望用户一次只能看到一个海关窗口,所以强制他们在下一个之前关闭前一个是显示。
    • 这似乎不直观。您究竟希望如何通知用户?
    • 如果你运行这个例子,你就会明白我的意思。使用 MessageBox 的结果与使用 Windows 的方法不同。使用 MessageBoxes 时,只有在前一个关闭后才能看到一个接一个(这就是我想要的)。使用自定义窗口时,您会同时看到它们(不是我想要的,我只想在上一个窗口关闭后看到下一个窗口,这就是 MessageBox 似乎所做的)
    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多