目的是在窗体失去焦点时触发不透明度事件。表单有一个STAY ON TOP的设置。视觉效果是点击一个可能重叠的窗口,然而未聚焦的形式将保持在顶部,但在角落稍微透明,使其易于访问,但提供对下面的东西的可见性。
我用谷歌搜索并用谷歌搜索,并且无法弄清楚当表格失去焦点时如何让这个事件正确点火,然后当表格获得焦点时,将不透明度恢复到100%或其他地方确定的等级。
提示?
// under designer.cs
//
// CollectionToolForm
//
//other code....
this.LostFocus += new System.EventHandler(goTransparent);
//method
private void goTransparent(object sender, EventArgs e)
{
if (transparentCheck.Checked == true)
{
this.Opacity = 0.50;
}
else
{
this.Opacity = 1;
}
}
答案 0 :(得分:6)
听起来好像您正在寻找Activated
和Deactivate
事件。
<强>更新强>
在回应关于LostFocus
事件的评论时,可能有必要澄清它是如何工作的。 LostFocus
的{{1}}事件继承自Form
。当控件失去焦点时会引发它;或者因为这样的表单被停用(焦点移动到另一个应用程序),或者因为焦点移动到同一表单中的另一个控件。
如果你为一个只包含至少一个可以获得焦点的控件的表单的Control
事件挂钩事件处理程序,你会发现表单的LostFocus
事件被引发< em>在显示表单后立即。这是因为焦点从表单(LostFocus
)移动到表单上的第一个可聚焦控件。
因此,表单处于活动状态并且正在聚焦的表单是两种不同的行为。
答案 1 :(得分:0)
您尝试使用鼠标进入/离开事件吗?
public Form1()
{
this.MouseEnter += new System.EventHandler(this.Form1_MouseEnter);
this.MouseLeave += new System.EventHandler(this.Form1_MouseLeave);
}
private void Form1_MouseLeave(object sender, EventArgs e)
{
this.Opacity = 0.5;
}
private void Form1_MouseEnter(object sender, EventArgs e)
{
this.Opacity = 1;
}