私は2つのフォームを使用しており、2番目のフォームが表示されたら最初のフォームを無効にします。2番目のフォームを閉じたときに最初のフォームを有効にする方法が見つかりませんでした。パラメータを渡すことは解決策かもしれませんが、もっと簡単な方法があるに違いありません。最初に、2番目のデストラクタで最初のフォームを有効にすることを考えましたが、それはできませんでした。誰か提案がありますか?
2 に答える
2
前述のように、この特定のケースでは、2番目のフォームを開くためにモーダルダイアログを使用するのがおそらく理にかなっています。
それが当てはまらない場合をカバーするために、受け入れられているベストプラクティスはFormClosing
、最初から2番目のフォームのイベントをサブスクライブすることです。イベントハンドラーでは、「自分」を有効にして、他のことを行うことができます。他のフォームが閉じられた結果として実行します。簡単な例を次に示します。
public partial class ParentForm : Form
{
private void button1_Click(object sender, EventArgs e)
{
ChildForm child = new ChildForm();
child.FormClosing += new FormClosingEventHandler(child_FormClosing);
Hide();
child.Show();
}
private void child_FormClosing(object sender, FormClosingEventArgs e)
{
Show();
}
}
于 2012-08-13T13:54:26.833 に答える
2
ShowDialog()を使用して2番目のフォームを表示できます-フォームはモーダルとして表示され、最初のフォームは2番目が閉じられるときにのみ有効になります。
将来の問題については、2番目の形式のフィールドで最初のインスタンスを作成し、必要に応じてそのインスタンスを使用できます。たとえば、カスタムコンストラクターを使用できます。
class SecondForm: Form
{
FirstForm _parentForm;
public SeconForm(FirstForm form)
{
InitializeComponent();
_parentForm = form;
}
void DoSomethingWithParent()
{
_parentForm.DoSomesting();
}
}
于 2012-08-13T13:34:20.870 に答える