При использовании метода Focus()
целевая форма приобретает фокус, но также переносится перед другими формами.Фокус формы, не принося ее перед другими
Есть ли способ избежать этой модификации z-order?
Вот краткий пример:
class MyForm : Form
{
static void Main(string[] args)
{
MyForm f1 = new MyForm()
{
Text = "f1"
};
f1.Show();
MyForm f2 = new MyForm()
{
Text = "f2"
};
f2.Show();
Button b1 = new Button();
b1.Click += (sender, e) => f2.Focus();
f1.Controls.Add(b1);
Button b2 = new Button();
b2.Click += (sender, e) => f1.Focus();
f2.Controls.Add(b2);
Application.Run(f1);
}
}
При нажатии на кнопку в f1
, f2
получит фокус, но и прийти перед f1
(это вещь, которую я хотел бы избежать).
Будет установка f1.TopMost = true; работа для вас? –
Вы отметили 'BringToFront'. Это и/или 'SendToBack', вероятно, могли бы заказывать формы по мере необходимости, но первоначального изменения, скорее всего, нельзя избежать, поскольку обычно это требуется. – TaW
@ TroyMac1ure: использование TopMost не будет работать, так как 'f2' должно быть в состоянии получить перед' f1' в некоторых случаях (например, если щелкнуть 'f2'). –