所以我需要在表格变得集中时发生的事件.......
答案 0 :(得分:24)
Form.Activated
你追求的是什么?
我建议此而不是GotFocus
的原因是,如果焦点从一个表单更改为另一个表单上的控件,则表单本身不会获得焦点。这是一个示例应用程序:
using System;
using System.Drawing;
using System.Windows.Forms;
class Test
{
static void Main()
{
TextBox tb = new TextBox();
Button button = new Button
{
Location = new Point(0, 30),
Text = "New form"
};
button.Click += (sender, args) =>
{
string name = tb.Text;
Form f = new Form();
f.Controls.Add(new Label { Text = name });
f.Activated += (s, a) => Console.WriteLine("Activated: " + name);
f.GotFocus += (s, a) => Console.WriteLine("GotFocus: " + name);
f.Show();
f.Controls.Add(new TextBox { Location = new Point(0, 30) });
};
Form master = new Form { Controls = { tb, button } };
Application.Run(master);
}
}
(将其构建为控制台应用程序 - 输出的位置。)
在文本框中输入一些名称,然后单击“新表单” - 然后再次执行。现在点击新表单上的文本框 - 您会看到Activated
事件被触发,但不是GotFocus
。
答案 1 :(得分:2)
GotFocus event怎么样?
请注意,Control上的GotFocus事件(从中派生Form,因此它适用于此处)标有BrowsableAttribute,将值false传递给constructor,因此它是不在属性窗口中可见。
您应该在设计器生成的代码的外部中手动添加事件处理程序。
答案 2 :(得分:1)
有一个Form.GotFocus事件。
答案 3 :(得分:1)