我有两种形式,第一种是frmballoon,第二种是frmballoon。我改变了两种形式的焦点,第一种是frmbase,然后是frmballoon(frmbase不可见),然后是frmbase。现在我需要一个事件,先是frmbase加载,然后是frmballoon不可见后再次显示。
所以我需要当形式变得集中时发生的事件……。
最佳答案
你在追求什么?
我建议这样做而不是Form.Activated
的原因是,如果焦点从一个窗体变为另一个窗体上的控件,则窗体本身不会获得焦点。下面是一个示例应用程序:
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);
}
}
(将其构建为控制台应用程序-这是输出的位置。)
在文本框中输入一些名称,然后单击“新建表单”-然后再次执行此操作。现在在新表单的文本框之间单击-您将看到
GotFocus
事件被触发,但不是Activated
。