C# winform如何实现窗口焦点抢占?以及强制关闭层级比自己高的任何窗口?
需求是这样的:
需要做一个全屏软件,一方面必须确保输入焦点在窗口内,另一方面,需要把在软件前面的任何窗口(广告、弹窗等)强行嘎掉;包括alt+tab切过来的窗口,也全部嘎掉。必须确保软件运行在最前面;
设置下 TopMost 属性。为了防止别的程序也抢占,可以定时器不断刷这个属性。
不知道你这个问题是否已经解决, 如果还没有解决的话:这样可以任意扩展你项目中的任何单例
声明一个公共泛型
public class GenericSingleton<T> where T : Form, new()
{
private static T t = null;
public static T CreateInstrance()
{
if ( t== null || t.IsDisposed)
{
t = new T();
}
return t;
}
}
调用
private void button2_Click(object sender,EventArgs e)
{
Form1 FrmAdd =GenericSingleton<Form1>.CreateInstrance();
FrmAdd.Show();
}
where T : Form, new()
约束是个窗口 并包含无参构造函数
t.IsDisposed
判断下是不是释放了;关闭窗体的时候是被释放了但不是NULL