1

メインフォームから、次のように、マウスクリックで他のいくつかのフォームを開きます。

メインフォーム:

...
private void btn_Click(object sender, EventArgs e){
    frmNewForm newForm = frmNewForm();
    newForm.Show();
}

新しいフォームでは、表示するデータがあるかどうかを確認し、ない場合はすぐにフォームを閉じます。新しいフォーム:

...
public frmNewForm(){
    InitializeComponent();

    // check if opening this form makes sense
    if(noData){
        Close();
    }
}

ただし、次の場所で例外がスローされfrmNewForm.Show()ます:オブジェクトにアクセスできません。

翻訳がVisualStudioとまったく同じでない場合は、お詫び申し上げます。別の言語バージョンを使用しています。

とにかく、安全に閉じるにはどうすればよいfrmNewFormですか?

4

2 に答える 2

3

新しいフォームのコンストラクターでそれを行いたくありません。Loadむしろ、イベントを閉じる前にロードが完了するように、イベントで実行する必要があります。

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.load.aspx

    private void Form1_Load(object sender, EventArgs e)
    {
        if (noData) this.Close();
    }

または、フォームを開く必要がないことがわかっている場合は、フォームを表示する前に確認してください。

于 2012-04-30T07:43:26.867 に答える
2

noDataがクラスのパブリック ブール プロパティである場合は、次のfrmNewFormようにすることができます。

if( !newForm.noData )
{
     newForm.Show();
}

わかる?

于 2012-04-30T07:46:13.630 に答える