gpt4 book ai didi

c# - Windows 窗体控件如何知道其窗体何时被(取消)激活?

转载 作者:行者123 更新时间:2023-11-30 16:34:41 24 4
gpt4 key购买 nike

我有一个使用 C# .NET 编写的 Windows 窗体应用程序。它包含一个用户绘制的控件,该控件还处理键盘焦点。如果控件的某个部分具有焦点,则会在其周围绘制一个焦点高亮边框。当包含控件的窗体被停用时,焦点边框显然必须从控件中消失。但是控件甚至没有收到有关它的通知。它只在另一个控件获得焦点时接收“离开”事件,而不是另一个窗口。控件如何知道这一点?

最佳答案

当Form+Control加载完成后,Control可以订阅Form的Activate和DeActivated事件。

如果它是一个 UserControl,您可以使用 Control.Load 事件来执行此操作。对于 CustomControl,我必须查找它。

无论如何,请务必在您的控件中实现 Dispose 以取消订阅事件。

试一试:

private void UserControl1_FormActivate(object sender, EventArgs e)
{
label1.Text = "Acitve";
}

private void UserControl1_FormDeActivate(object sender, EventArgs e)
{
label1.Text = "InAcitve";
}

private void UserControl1_Load(object sender, EventArgs e)
{
this.ParentForm.Activated += UserControl1_FormActivate;
this.ParentForm.Deactivate += UserControl1_FormDeActivate;
}

关于c# - Windows 窗体控件如何知道其窗体何时被(取消)激活?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2371491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com