簡體   English   中英

當用戶單擊 WPF 中的 X 按鈕時,如何顯示 MessageBox 提示

[英]How do I show a MessageBox promp when the user has clicked the X button in WPF

我正在處理 C# WPF 應用程序。 在我從用戶那里得到一些輸入后,我需要檢查一些條件,如果條件不匹配並且用戶按下了 X 按鈕,我需要能夠顯示一個包含錯誤的 MessageBox。 用戶在 MessageBox 中按下確定后,我需要用戶返回到之前的 window。我的代碼看起來像這樣。

  private void Window_Closing(object sender, CancelEventArgs e)
  {
     MessageBoxResult closingMessegeBoxResult = MessageBox.Show("Is it OK to close?", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
     if (closingMessegeBoxResult != MessageBoxResult.OK)
     {
        e.Cancel = true;
        this.Activate();
     }
  }
     private void Window_Closed(object sender, EventArgs a)
  {

  }

現在我只想能夠顯示帶有隨機錯誤的 MessageBox。

您的代碼工作正常。

您必須將 OnClosing 事件添加到 window,

當您單擊 window 的關閉時,您將看到消息

<Window x:Class="TestProject.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:TestProject"
    mc:Ignorable="d"
    Title="MainWindow" Height="450" Width="800"

    Closing="MainWindow_OnClosing">
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void MainWindow_OnClosing(object? sender, CancelEventArgs e)
    {
        MessageBoxResult closingMessegeBoxResult = MessageBox.Show("Is it OK to close?", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
        if (closingMessegeBoxResult == MessageBoxResult.OK)
        {
            e.Cancel = true;
            this.Activate();
        }
    }
}

您應該使用MessageBoxButton.OKCancel選項來使用戶避免關閉 window:

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    MessageBoxResult closingMessegeBoxResult = MessageBox.Show("Is it OK to close?", "Error",
        MessageBoxButton.OKCancel, MessageBoxImage.Error);
    if (closingMessegeBoxResult != MessageBoxResult.OK)
    {
        e.Cancel = true;
    }
}

使用上面的代碼,window 只會在用戶單擊對話框的“確定”按鈕時關閉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM