1

私は、Winforms と WPF が混在するアプリケーションに取り組んでいます。アプリの古い部分は Winforms (「メイン」アプリケーション ウィンドウを含む) で、最近の画面の一部は WPF です。ユーザーは異なる画面で同時に作業することが多いため、これらの WPF ウィンドウは通常、モーダルで起動されません。

ユーザーが WPF 画面のいずれかで特定のアクションの結果として警告/エラーに遭遇した場合、通常は WPF MessageBox (System.Windows.MessageBox) によって通知されます。これらのメッセージ ボックスを起動した特定の画面のレベルではなく、アプリケーション レベルでモーダルにする方法はありますか? 他の画面を操作する前に、ユーザーに警告を確認させたい。

System.Windows.Forms.MessageBox を使用すると、代わりに動作するように見えますが、System.Windows.MessageBox に固執したいと思います。ありがとう。

4

1 に答える 1

1

WPFではこれで問題ありません。Window ownerパラメータを MessageBox.Show 呼び出しに指定するだけです。所有するメッセージ ボックスは、その性質上モーダルです。たとえば、次のオーバーロードされたバージョンの Show を使用して、メッセージ ボックスをカスタマイズします。

public static MessageBoxResult Show(Window owner, string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon);

これは非常に単純です(確かに機能します:))例:

MainWindow.xaml:

<Window x:Class="WpfApplication2_ModalMessageBox.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Button VerticalAlignment="Center" HorizontalAlignment="Center"
            Click="Button_Click">Modal</Button>
    </Grid>
</Window>

MainWindow.xaml.cs:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show(this, "Text", "Caption", MessageBoxButton.OK, MessageBoxImage.Information);
    }
}
于 2013-05-24T08:51:31.053 に答える