最近も似たような状況でした。私は似たようなことを試みていましたが、別のクラスから子フォームを制御することによって。
注:
子フォームの「TopMost」を許可しないものに設定しようとしています。
この場合、「MdiContainer」です。
これを達成するには:
•MainFormの「isMdiContainer」プロパティを無効にします(とにかくその使用は廃止されました)。
•Form(s)TopMostプロパティをtrueに設定します。
•これで、機能を実行できるようになります。
**コード例:**
/* On your Main Form Class */
private void btnSystem_Click(object sender, EventArgs e)
{
// Instantiate the Form_EnterPassword by passing the MainForm
Form_EnterPassword EP = new Form_EnterPassword(this);
EP.Show(); // No longer as modal Form to display in front.
}
/* Under your EnterPassword Form Class */
// Do not create a new Instance of MyMainForm.
// You want to use the same thread as your MainForm
private MyMainForm mainForm;
/* Constructor */
public Form_EnterPassword(MyMainForm form)
{
mainForm = form;
this.Owner = mainForm; // "this" refers to the: EnterPassword Form.
}
備考:(
完璧を達成するために)あなたが(おそらく)しなければならない唯一の追加のことは、MainForm>WindowStateをチェックすることです。フォームを最小化または特定の状態にするためのコードブロックを作成します。
すなわち:
if (WindowState == FormWindowState.Minimized)
{ /* Code to Minimize all the Child Forms. */ }
else { /* Code to bring all Forms to their "Normal" State */ }