首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AppBar焦点问题

AppBar焦点问题
EN

Stack Overflow用户
提问于 2010-06-24 10:56:45
回答 1查看 760关注 0票数 3

我创建了一个AppBar。AppBar总是在顶部,当它失去焦点时,返回到AppBar需要点击两次而不是一次。我相信第一次点击激活表单,然后第二次点击我收到鼠标点击事件(如预期的)。你能给出一些想法吗,这里有什么问题吗?我的问题类似于这个Appbar和焦点问题。不幸的是,链接中的OP没有发布他的解决方案,可悲。

我在本文后面创建了来自CodeProject C#做Shell,第3部分的CodeProject。

我用Spy++进行了调查,但不知道为什么会发生这种情况。下面是我获得的测试此场景的Spy++日志(第一次单击无效,第二次单击无效)。

代码语言:javascript
复制
<00001> 00090CFE S WM_PARENTNOTIFY fwEvent:WM_LBUTTONDOWN xPos:25 yPos:17
<00002> 00090CFE R WM_PARENTNOTIFY
<00003> 00090CFE S WM_WINDOWPOSCHANGING lpwp:0418EAE4
<00004> 00090CFE R WM_WINDOWPOSCHANGING
<00005> 00090CFE S WM_ACTIVATEAPP fActive:True dwThreadID:00000000
<00006> 00090CFE R WM_ACTIVATEAPP
<00007> 00090CFE S WM_NCACTIVATE fActive:True
<00008> 00090CFE R WM_NCACTIVATE
<00009> 00090CFE S WM_ACTIVATE fActive:WA_CLICKACTIVE fMinimized:False hwndPrevious:(null)
<00010> 00090CFE S WM_IME_SETCONTEXT fSet:1 iShow:C000000F
<00011> 00090CFE S WM_IME_NOTIFY dwCommand:IMN_OPENSTATUSWINDOW dwCommand:00000002 dwData:00000000
<00012> 00090CFE R WM_IME_NOTIFY
<00013> 00090CFE R WM_IME_SETCONTEXT
<00014> 00090CFE S WM_SETFOCUS hwndLoseFocus:(null)
<00015> 00090CFE R WM_SETFOCUS
<00016> 00090CFE R WM_ACTIVATE

Now happens the second click (which works)
<00017> 00090CFE S WM_PARENTNOTIFY fwEvent:WM_LBUTTONDOWN xPos:25 yPos:17
<00018> 00090CFE R WM_PARENTNOTIFY
<00019> 00090CFE S WM_WINDOWPOSCHANGING lpwp:0418E40C
<00020> 00090CFE R WM_WINDOWPOSCHANGING

查看WM_LBUTTONDOWN日志,我相信问题在于激活,我认为只有当窗口被激活时,它才会接收Spy++事件。但是为什么其他的窗口没有被激活,但它们仍然只需一次点击就可以工作(也就是说,我不必先点击它)。

编辑:,我认为问题在于ToolStrip。我的ToolStrip在我的AppBar里。现在我是怎么核实这个的?在相同的表单上,我创建了一个按钮,并在它的click事件中显示了一个消息框,它运行良好。现在该如何补救呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-25 11:59:41

好吧,我终于明白了,(为了子孙后代的利益)这就是正在发生的事情。问题不在于Form,而在于ToolStrip (我相信可以在Word中复制)。这个特性是设计出来的,而不是一个bug。在WM消息中,在工具条的WndProc中,它返回激活窗口的,即提供焦点,但丢弃鼠标消息,这就是为什么我们必须单击两次,因为第一条鼠标消息被丢弃。

现在是解决办法了?重写派生类中的MA_ACTIVATEANDEAT,WndProc of ToolStrip,而不是将Message.Result属性设置为这是一个关于如何做它的教程。如何为.NET 2.0 ToolStrip和MenuStrip启用“单击通过”

希望有帮助:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3109301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档