C#怎么做一个永远没有焦点的窗口 类似输入法控制栏
来源:互联网 发布:mac os 应用程序 推荐 编辑:程序博客网 时间:2024/04/27 15:49
在窗体加入如下代码,防止窗体获得焦点
private const int WM_MOUSEACTIVATE = 0x21;private const int MA_NOACTIVATE = 3;protected override void WndProc(ref Message m){ if (m.Msg == WM_MOUSEACTIVATE) { m.Result = new IntPtr(MA_NOACTIVATE); return; } base.WndProc(ref m);} protected override bool ShowWithoutActivation{ get { return false; }}
然后再加入如下代码,防止窗体的控件获得焦点
void SetChildControlNoFocus(Control ctrl){ if (ctrl.HasChildren) foreach (Button c in ctrl.Controls) { SetControlNoFocus(c); }}MethodInfo SetControlStyleMethod;object[] SetControlStyleArgs = new object[] { ControlStyles.Selectable, false };private void SetControlNoFocus(Button ctrl){ SetControlStyleMethod.Invoke(ctrl, SetControlStyleArgs); SetChildControlNoFocus(ctrl);}
最后就是在窗体的构造函数部分调用如下代码,完成初始化参数的任务
SetControlStyleMethod = typeof(Button).GetMethod("SetStyle", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod);SetChildControlNoFocus(this);this.DoubleBuffered = true;SetStyle(ControlStyles.Selectable, false);this.TopMost = true;this.FormBorderStyle = FormBorderStyle.None;this.ShowIcon = false;this.ShowInTaskbar = false;
最后这个窗体,就永远无法获得焦点了
- C#怎么做一个永远没有焦点的窗口 类似输入法控制栏
- 如何做CEdit中的Undo,Redo(和word类似的输入法输入一次为一个回退块)
- 怎么做一个没有大坑的项目方案
- ibus输入法"没有输入窗口"的问题
- 永远做一个有计划的人
- 永远做一个有计划的人
- Android没有输入焦点类控件的输入法调用
- Android没有输入焦点类控件的输入法调用
- Android没有输入焦点类控件的输入法调用
- Android - 文本框的输入法控制和默认焦点设置
- Android - 文本框的输入法控制和默认焦点设置
- 启动一个没有界面的Activity(且没有焦点)
- 没有永远的菜鸟
- android edittext保持焦点不弹出输入法的一个解决方法
- 用C#做一个悬浮窗口
- 永远的窗口
- 永远的窗口
- Swing做一个类似红绿灯的东西
- C#温故而知新学习系列之面向对象编程—3-类的数据成员
- 监听ContentProvider中数据的变化
- 将图片保存到一个XML文件
- 数据库常用语句(二)
- C#温故而知新学习系列之面向对象编程—4-方法
- C#怎么做一个永远没有焦点的窗口 类似输入法控制栏
- 在cocos2d中加入背景音乐和音效
- LeetCode: Add Two Numbers
- C#温故而知新学习系列之面向对象编程—5-ref参数
- Android应用底部导航栏(选项卡)实例
- 数据库常用语句大全(三)
- C#温故而知新学习系列之面向对象编程—6-out参数
- .net 中读取Excel2007的方法(服务器不装office2007) for ExcelToSQL
- 函数指针总结