2010-12-14 5 views
3

私が書いているプログラムでメインフォームを使用する前に、開くファイルを選択する必要があります。この後LoadイベントでOpenFileDialogを開くと、Windows Formsフォームがバックグラウンドで開きます

private void MainForm_Load(object sender, EventArgs e) 
{ 
    if (openXmlFileDialog.ShowDialog() != DialogResult.OK) 
     Application.Exit(); 

    fileName = openXmlFileDialog.FileName; 
    Activate(); 
} 

、MainFormをその上に()Activateを呼び出すのにもかかわらず、バックグラウンドで表示されます:私は、フォームのLoadイベントハンドラに次のように書きました。

もう1つの問題は、ユーザーが[キャンセル]を押してApplication.Exit()が呼び出されても効果がないことです。

答えて

3

代わりにコードをShownイベントの内部に入れてください。

+0

Form1.csに感謝でこれを行います!それは両方の問題を解決しました! – neo2862

1

Program.cs

[STAThread] 
static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    OpenFileDialog o = new OpenFileDialog(); 
    if (DialogResult.OK == o.ShowDialog()) 
    { 
     Application.Run(new Form1(o.FileName)); 
    } 
    else 
    { 
     Application.Exit(); 
    } 
} 

string filename; 
public Form1(string filename) 
{ 
    this.filename=filename; 
    InitializeComponent(); 
} 
関連する問題