私はこの問題を長年解決しようとしています。 は、私は2つの形態があり、私の目的は次の通りである。Winforms:2つの不明なフォームを前面に表示
- ユーザーはForm2のを最小限にすると、Form1があまりにも最小限に抑えなければなりません。
- ユーザーがform2を最大化する場合、form1も最大化する必要があります。
- 両方のフォームが別のウィンドウで覆い隠され、ユーザーがタスクバーのform2アイコンをクリックすると、form1も前面に来る必要があります。
私がa_Resizeメソッドで解決した最初の2つのこと。しかし、私は3番目のことをすることはできません。私はactivateイベントで試してみましたが、私がそうすると、form2はブロックされたままです。私はForm2のをactivateイベントにハンドラを追加する場合
public partial class Form1 : Form
{
Form2 form2;
public Form1()
{
InitializeComponent();
form2 = new Form2();
form2.Show();
form2.Resize += new EventHandler(a_Resize);
}
void a_Resize(object sender, EventArgs e)
{
if (((Form)sender).WindowState == FormWindowState.Minimized)
{
this.WindowState = FormWindowState.Minimized;
}
else
{
this.WindowState = FormWindowState.Normal;
}
}
}
:
form2.Activated += new EventHandler(form2_Activated);
そして、Form2のをブロックし続けて(私はあまりにも他の方法を試してみました)インスタンスのフォーカスメソッドを呼び出し は、ここに私のコードですform1の後ろに。
void form2_Activated(object sender, EventArgs e)
{
this.Focus();
}
どうすればいいですか?
2つのフォームを同時に「アクティブ」にすることはできません。フォアグラウンドウィンドウは1つだけです。あなたは1つを選ぶ必要があります。あなたはどれが欲しいですか? –
私は彼が両方をアクティブにしようとしているとは思わない。彼は 'form2'が起動されたときに' form1'もフォアグラウンドに持ち込まれるようにしたいと思っています(しかし 'form2'の後ろに)。 'form2'が' form1'を親として持つモーダルダイアログだった場合と似ています。 – ean5533
@Thiago:* 'Focus()'の代わりに 'BringToFront()'を使うようにしてください。 – Tigran