2012-02-09 8 views
3

私はVisual Studio 2010 Expressで書いているWinForms C#プログラムを持っています。このプログラムには、「MainForm」というメインフォームと「ConfigForm」という2次フォームという2つのフォームがあります。 MainFormには、ConfigFormをポップアップするボタンがあります。WinFormポップアップと親との関係

private void buttonConfig_Click(object sender, EventArgs e) 
    { 
     new ConfigForm().Show(); 
    } 

ボタンをクリックすると、今すぐConfigFormがそのように感じられる場所にポップアップします。これは必ずしもMainForm上にポップアップするとは限りません。メインフォームの上にポップアップ表示するにはどうしたらいいですか? ConfigFormのStartPositionをCenterParentに設定しようとしましたが、何もしないようです。

そのため、ConfigFormが開いているときにプログラムを「ロック」するにはどうすればいいですか? ConfigFormが開いているときは、ユーザーがMainFormに戻る機能を持っていない方がよいでしょう。

private void buttonConfig_Click(object sender, EventArgs e) 
{ 
    using (ConfigForm cf = new ConfigForm()) { 
    cf.ShowDialog(this); 
    } 
} 

をとはい、ConfigForm.StartPosition = CenterParentあなたが述べたようにしていることを確認します

+0

新しいConfigForm()を試したことがありますか? – ordag

答えて

7

あなたは、おそらくこのような何かを探しています。

void buttonOK(object sender, EventArgs e) { 
    this.DialogResult = DialogResult.OK; 
    this.Close(); 
} 

は、その後、あなたの呼び出し規約を使用できます:ConfigFormフォームで

、あなたはあなたのボタンは、このように、フォームの DialogResults設定することができます

private void buttonConfig_Click(object sender, EventArgs e) 
{ 
    using (ConfigForm cf = new ConfigForm()) { 
    if (cf.ShowDialog(this) == DialogResult.OK) { 
     // do something the user said was ok 
    } 
    } 
} 
+0

ああ... .Show()VS .ShowDialog ...私は違いを知らなかった。なぜあなたはここで「使う」を使っていますか? –

+0

スコープ外に出たときにConfigFormでdisposeを呼び出します。 – Chriseyre2000

+0

@ JasonAxelrod ShowDialogは、基本的にプログラムをポップアップフォームにロックするので、ユーザは何もできずにダイアログに答えることができます。 'using'ブロックは、フォームが閉じられた後にフォームを破棄するのが便利です。 – LarsTech

1

ShowDialogメソッドを使用してみてください。