大家好,最近在研究C#软键盘,参看了这个博客
http://www.cnblogs.com/youzai/archive/2008/05/19/1202732.html其中通过
4private void HookOnMouseActivity(object sener, HookEx.MouseExEventArgs e) {
5 Point location = e.Location;
6
7 if (e.Button == MouseButtons.Left) {
8 Rectangle captionRect = new Rectangle(this.Location, new Size(this.Width,
9 SystemInformation.CaptionHeight));
10 if (captionRect.Contains(location)) {
11 NativeMethods.SetWindowLong(this.Handle, KeyboardConstaint.GWL_EXSTYLE,
12 (int)NativeMethods.GetWindowLong(this.Handle, KeyboardConstaint.GWL_EXSTYLE)
13 & (~KeyboardConstaint.WS_DISABLED));
14 NativeMethods.SendMessage(this.Handle, KeyboardConstaint.WM_SETFOCUS, IntPtr.Zero, IntPtr.Zero);
15 } else {
16 NativeMethods.SetWindowLong(this.Handle, KeyboardConstaint.GWL_EXSTYLE,
17 (int)NativeMethods.GetWindowLong(this.Handle, KeyboardConstaint.GWL_EXSTYLE) |
18 KeyboardConstaint.WS_DISABLED);
19 }
20 }
21}让窗体不能获得焦点。现在我希望在父窗体FormA中,Show出一个类似于软键盘功能的子窗体,但是正常情况下,Show出子窗体的同时,父窗体就失去了焦点,同理,父窗体得到焦点的时候,子窗体又失去焦点了。这会导致程序的使用效果完全不是我想要的样子。
于是我完全照搬上面链接的实现方法,在FormA中Show出这个实现好的软键盘,但是发现这个软键盘是对FormA不起作用的,例如FormA中有个TextBox,然后点击软键盘中的按钮,软键盘竟然获得了焦点,同时FormA失去了焦点。但是这个软键盘可以给其他程序使用,例如QQ。
所以,我在想这是不是C#的机制的问题?
是否有其他方法来实现我想要的效果呢?
谢谢大家!
http://www.cnblogs.com/youzai/archive/2008/05/19/1202732.html其中通过
4private void HookOnMouseActivity(object sener, HookEx.MouseExEventArgs e) {
5 Point location = e.Location;
6
7 if (e.Button == MouseButtons.Left) {
8 Rectangle captionRect = new Rectangle(this.Location, new Size(this.Width,
9 SystemInformation.CaptionHeight));
10 if (captionRect.Contains(location)) {
11 NativeMethods.SetWindowLong(this.Handle, KeyboardConstaint.GWL_EXSTYLE,
12 (int)NativeMethods.GetWindowLong(this.Handle, KeyboardConstaint.GWL_EXSTYLE)
13 & (~KeyboardConstaint.WS_DISABLED));
14 NativeMethods.SendMessage(this.Handle, KeyboardConstaint.WM_SETFOCUS, IntPtr.Zero, IntPtr.Zero);
15 } else {
16 NativeMethods.SetWindowLong(this.Handle, KeyboardConstaint.GWL_EXSTYLE,
17 (int)NativeMethods.GetWindowLong(this.Handle, KeyboardConstaint.GWL_EXSTYLE) |
18 KeyboardConstaint.WS_DISABLED);
19 }
20 }
21}让窗体不能获得焦点。现在我希望在父窗体FormA中,Show出一个类似于软键盘功能的子窗体,但是正常情况下,Show出子窗体的同时,父窗体就失去了焦点,同理,父窗体得到焦点的时候,子窗体又失去焦点了。这会导致程序的使用效果完全不是我想要的样子。
于是我完全照搬上面链接的实现方法,在FormA中Show出这个实现好的软键盘,但是发现这个软键盘是对FormA不起作用的,例如FormA中有个TextBox,然后点击软键盘中的按钮,软键盘竟然获得了焦点,同时FormA失去了焦点。但是这个软键盘可以给其他程序使用,例如QQ。
所以,我在想这是不是C#的机制的问题?
是否有其他方法来实现我想要的效果呢?
谢谢大家!
解决方案 »
- 关于wcf传递datatable问题,在线等
- 连接mobile数据库问题
- 水晶报表链接问题????
- 并发冲突: UpdateCommand 影响 0 个记录
- 请问datagridview里面的datagridviewcheckboxcolumn列里面的checkbox后面可以跟文字吗?
- 在什么位置 怎样编写ButtonColumn的lick事件呢?
- 问一下,一个像联众这样的软件,需要多少钱。原创做的话。
- 关于枚举类型的问题
- 如何给控件设置字符串(#cccccccc)形式的背景色
- 关于用上传文件的问题,高手请赐教
- 能否使用CMD命令控制VS自动发布C#写的Web程序?
- AspxGridView控件中EditForm的排版问题
1)对,我在自己程序中实现软键盘,就像你说的“悬浮框”。我现在自己的悬浮框,点击的时候总会获得焦点,同时会让父窗体失去焦点。
2)这个软键盘不是别的程序用的。其实我的疑惑就在于,是不是因为两个Form在一个App中跑,所以导致软键盘失效。放在单独的App中也许能解决这个问题。但是最好还是不要这么做。