随笔 - 8, 文章 - 25, 评论 - 26, 阅读 - 27116
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

解决使用spread时快捷键无反应的情况

Posted on   醉春风  阅读(1088)  评论(0编辑  收藏  举报
用过spread的朋友可能会碰到这么一种情况:
如果我的画面中有快捷键,比如说“F1”、“F2”、“F3”等等,当你的焦点在spread里边时,
你会发现你定义的那些快捷键有时候不反应,原因是焦点陷入spread里面,导致画面捕捉不到快捷键。
给个画面例子:


对于以上画面中的那些快捷键(画面底部),如果焦点在spread中,就会可能导致“F3”不好用。
 
解决方法:
在你的画面的构造函数里边加上以下代码
FarPoint.Win.Spread.InputMap im;
            
            
//spdResult是你画面中定义的spread的名字。

            
//WhenFocused:焦点离开时

            im 
= spdResult.GetInputMap(InputMapMode.WhenFocused);

            
//按回车键和TAB时,焦点移动到下一个单元格

            im.Put(
new Keystroke(Keys.Enter,Keys.None),SpreadActions.MoveToNextColumnWrap);
            im.Put(
new Keystroke(Keys.Tab,Keys.None),SpreadActions.MoveToNextColumnWrap);

            
//按→、↓、←、↑时,焦点移动

            im.Put(
new Keystroke(Keys.Left,Keys.None),SpreadActions.MoveToPreviousColumn);
            im.Put(
new Keystroke(Keys.Right,Keys.None),SpreadActions.MoveToNextColumn);

            
//使快捷键有效

            im.Put(
new Keystroke(Keys.F1,Keys.None),SpreadActions.None);
            im.Put(
new Keystroke(Keys.F2,Keys.None),SpreadActions.None);
            im.Put(
new Keystroke(Keys.F3,Keys.None),SpreadActions.None);
            im.Put(
new Keystroke(Keys.F8,Keys.None),SpreadActions.None);
            im.Put(
new Keystroke(Keys.F10,Keys.None),SpreadActions.None);
            im.Put(
new Keystroke(Keys.F12,Keys.None),SpreadActions.None);

            
//WhenAncestorOfFocused:得到焦点时

            im 
= spdResult.GetInputMap(InputMapMode.WhenAncestorOfFocused);
            im.Put(
new Keystroke(Keys.Enter,Keys.None),SpreadActions.MoveToNextColumnWrap);
            im.Put(
new Keystroke(Keys.Tab,Keys.None),SpreadActions.MoveToNextColumnWrap);

            im.Put(
new Keystroke(Keys.Left,Keys.None),SpreadActions.MoveToPreviousColumn);
            im.Put(
new Keystroke(Keys.Right,Keys.None),SpreadActions.MoveToNextColumn);

            im.Put(
new Keystroke(Keys.F1,Keys.None),SpreadActions.None);
            im.Put(
new Keystroke(Keys.F2,Keys.None),SpreadActions.None);
            im.Put(
new Keystroke(Keys.F3,Keys.None),SpreadActions.None);
            im.Put(
new Keystroke(Keys.F8,Keys.None),SpreadActions.None);
            im.Put(
new Keystroke(Keys.F10,Keys.None),SpreadActions.None);
            im.Put(
new Keystroke(Keys.F12,Keys.None),SpreadActions.None);


-以上是网上作者做的(sunjianbo.cublog.cn)
还有解决办法在后面.


编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示