В родительской форме mdi у меня есть элемент управления, на который я хочу обратить внимание, если все дети mdi закрылись. Я пытался подключиться к событию FormClosed дочерней формы и установить фокус оттуда, но когда я проверяю его, мой элемент управления не остается с фокусом, когда я закрываю дочерний элемент mdi.
Может кто-нибудь сказать мне, что мне не хватает?
В приведенном ниже примере «первый фокус» получает удар и выполняет свою работу правильно (если я закомментирую первую строку фокуса, мое дерево не получает фокус при запуске, поэтому оно должно выполнять свою работу, верно?)
К сожалению, несмотря на то, что «второй фокус» ударил, мое дерево не заканчивается фокусом, когда я закрываю дочернее окно.
Имеет фокус при запуске.
Имеет фокус http://www.programmingforpeople.com/images/stackoverflow/focus1.PNG
Не фокусируется после закрытия дочернего окна.
Нет фокуса http://www.programmingforpeople.com/images/stackoverflow/focus2.PNG
Пример
using System;
using System.Windows.Forms;
namespace mdiFocus
{
class ParentForm : Form
{
public ParentForm()
{
IsMdiContainer = true;
tree = new TreeView();
tree.Nodes.Add("SomeNode");
tree.Dock = DockStyle.Left;
Controls.Add(tree);
}
protected override void OnShown(EventArgs e)
{
Form child = new Form();
child.MdiParent = this;
child.Show();
child.FormClosed += new FormClosedEventHandler(child_FormClosed);
tree.Focus(); // first focus works ok
}
void child_FormClosed(object sender, FormClosedEventArgs e)
{
tree.Focus(); // second focus doesn't seem to work, even though it is hit :(
}
TreeView tree;
}
static class Program
{
[STAThread]
static void Main()
{
Application.Run(new ParentForm());
}
}
}