ここに ParentForm と ChildForm の二つの Form があります。
ParentForm と ChildForm にはそれぞれ Button が 1 つずつあります。
ParentForm の Button には、
private void Button_Click(object sender, EventArgs e)
{
ChildForm child = new ChildForm();
child.ShowDialog(this);
}ChildForm の Button には、
private void Button_Click(object sender, EventArgs e)
{
base.Owner.Enabled = false;
base.Owner.Enabled = true;
}がそれぞれ定義してあります。
ParentForm の Button を押すと、ChildForm がダイアログとして表示されます。
ダイアログですので、当然 ParentForm は操作不可能になります。
しかし、ChildForm の Button を押すと ParentForm が操作可能になります。
これは Enabled を true にするだけでは起こらず、false から true へと変化させることで起こります。
ちなみに .NET2.0 で作っても、Vista で動かしても同じ動きになるはず。
試したとき Vista はまだ RC だか β だかでしたが・・・
C++ で MFC とか VB をやったことがないので、これが正常な動作かわかりません。(勉強しないと;)
以前、特殊な要件を満たすためにこれを利用したんですが、バグ利用な気がして今でも後味がよろしくありません。