2017-04-19 13 views
0

私はウィンドウを持っていますが、それが表示される前にいくつかのチェックを行います。WPFウィンドウのロードを防ぐ/閉じるにはどうすればいいですか?

public class MyDlg : Window 
{ 
    public MyDlg() 
    { 
     Initialized += new EventHandler(Window_Initialized); 
    } 
    private void Window_Initialized(object sender, EventArgs eventArgs) 
    { 
     if (!/*do some checking*/) 
     { 
      Loaded += (s, e) => Close(); 
     } 
    } 
} 

"do some checking"が失敗した場合、上記コードはウィンドウが読み込まれた直後にウィンドウを閉じます。しかし、これはあまりにも遅いです。なぜなら、ウィンドウが表示され消えていくのを見ることができるからです。

どのように表示せずにウィンドウを閉じることができますか?

EDIT:

MyDlg dlg = new MyDlg(); 
dlg.ShowDialog(); 

しかし、彼らが他の人によって書かれているので、私は、「ShowDialogのを()」の呼び出しを防止することが困難であるが、(私がしようとしている:MyDlgを構築します1は次のようである 一部のライブラリにMyDlgを書き込む)

+0

誰がMyDlgを構築しますか?さらに、googleを使用してくださいhttp://stackoverflow.com/questions/1539958/wpf-showing-dialog-before-main-window – ilansch

+2

なぜオープンさせるのですか?あなたは開封前にそれを制限できませんか? –

+0

私はむしろチェックをLoadイベント内に移動したいと思います。 –

答えて

1

OKであれば、バック見える/デフォルトのプロパティを変更行って見ることができますそれを示している?

ウィンドウのShowまたはShowDialogメソッドを呼び出す前にチェックを行ってください。あなたは、どちらかの呼び出し元のコードでこれを行うことができます:

MyDlg dlg = new MyDlg(); 
//perform your check here... 
dlg.ShowDialog(); 

...またはMyDlgウィンドウのコンストラクタで:

public MyDlg() 
{ 
    //perform your check here... 
} 

明らかにウィンドウがすでにWindow_Initializedイベントハンドラが取得する時間で示されていますウィンドウが表示されないようにするには、チェックを実行するのが遅すぎます。開かれていないウィンドウを閉じることはできません。

+0

ありがとう、おそらく、 'ShowDialog()'の前に強制的にチェックするのが最善の方法です。 – Dia

0

新しいウィンドウ内にスプラッシュダイアログを作成することができます。

そして、ウィンドウ/ダイアログでIsEnabled = Falseを設定します。

あなたの操作が迅速であれば、スプラッシュする必要はありません。ちょうどあなたのウィンドウを非表示:

<Window x:Class="Wpf.Test01.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:Wpf.Test01" 
     xmlns:charting="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" 
     mc:Ignorable="d" 
     IsEnabled="False" 
     WindowStyle="None" 
     AllowsTransparency="True" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Background> 
     <SolidColorBrush Opacity="0.0" Color="White" /> 
    </Window.Background> 

あなたはそれがここにWPF Window with transparent background containing opaque controls

もちろんすべてが、私はせずに私のウィンドウを閉じることができますどのように

関連する問題