環境:介面上有TextBox,ComboBox等控制項。
不建議把左右方向鍵都用來切換焦點,否則你在TextBox裡面改變遊標所在字元位置就不方便了。
方法一:笨方法,需為每個控制項單獨註冊事件處理
#以TextBox為例,程式碼如下:
1 private void textbox_KeyDown(object sender, KeyEventArgs e) 2 { 3 if (e.KeyCode == Keys.Down || e.KeyCode == Keys.Enter) 4 { 5 e.SuppressKeyPress = true; 6 System.Windows.Forms.SendKeys.Send("{Tab}"); 7 } 8 else if (e.KeyCode == Keys.Up) 9 { 10 e.SuppressKeyPress = true; 11 System.Windows.Forms.SendKeys.Send("+{Tab}"); 12 } 13 }
方法二:簡單方法,無需為每個控制項單獨註冊事件處理,僅需在窗體類別上加入以下程式碼:
1 //上、下方向键,及回车键切换控件焦点 2 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 3 { 4 Keys key = (keyData & Keys.KeyCode); 5 if (e.KeyCode == Keys.Down || e.KeyCode == Keys.Enter) 6 { 7 System.Windows.Forms.SendKeys.Send("{Tab}"); 8 return true; 9 } 10 else if (e.KeyCode == Keys.Up) 11 { 12 System.Windows.Forms.SendKeys.Send("+{Tab}");13 return true; 14 } 15 return base.ProcessCmdKey(ref msg, keyData);16 }
到此,切換控制焦點的功能已實現,現在有個新的需求,窗體介面上有兩個ComboBox控制cmbMeas和cmbRemark,我希望在這兩個控制項上Enter回車時提交,而不是切換焦點,那怎麼辦呢?那就需要判斷目前擁有焦點的控制項是不是cmbMeas或cmbRemark,上面的程式碼需要稍微改動下,具體程式碼如下:
1 //API声明:获取当前焦点控件句柄 2 [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)] 3 internal static extern IntPtr GetFocus(); 4 5 //获取当前拥有焦点的控件 6 private Control GetFocusedControl() 7 { 8 Control focusedControl = null; 9 // To get hold of the focused control:10 IntPtr focusedHandle = GetFocus();11 if (focusedHandle != IntPtr.Zero)12 //focusedControl = Control.FromHandle(focusedHandle);13 focusedControl = Control.FromChildHandle(focusedHandle);14 return focusedControl ;15 }16 17 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)18 {19 Keys key = (keyData & Keys.KeyCode);20 Control ctrl = GetFocusedControl();21 if (e.KeyCode == Keys.Down || (key == Keys.Enter && ctrl.Name != "cmbMeas" && ctrl.Name != "cmbRemark")) 22 { 23 System.Windows.Forms.SendKeys.Send("{Tab}"); 24 return true; 25 } 26 else if (e.KeyCode == Keys.Up) 27 { 28 System.Windows.Forms.SendKeys.Send("+{Tab}");29 return true; 30 } 31 return base.ProcessCmdKey(ref msg, keyData);32 }
說明:
#Control.FromHandle 方法
傳回目前與指定句柄關聯的控制項;如果找不到指定句柄的控件,就傳回空引用。
Control.FromChildHandle 方法
如果需要傳回擁有多個句柄的控件,應使用 FromChildHandle 方法。
此方法沿著視窗句柄父級鏈向上搜索,直到找到與控制項關聯的句柄。此方法比 FromHandle 方法更可靠,因為它正確傳回擁有多個句柄的控制項。
對於使用者自訂控件,應使用FromChildHandle 方法。
以上是C#中方向鍵與回車鍵切換控制焦點的兩種方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

很多朋友刚接触win系统的时候可能用不习惯,电脑中存着双系统,这个时候其实是可以双系统切换的,下面就一起来看看两个系统切换的详细步骤吧。win10系统如何两个系统切换方法一、快捷键切换1、按下“win”+“R”键打开运行2、在运行框中输入“msconfig”点击“确定”3、在打开的“系统配置”界面中选择自己需要的系统点击“设为默认值”,完成后“重新启动”即可完成切换方法二、开机时选择切换1、拥有双系统时开机会出现一个选择操作界面,可以使用键盘“上下”键进行选择系统

当今人工智能(AI)技术的发展如火如荼,它们在各个领域都展现出了巨大的潜力和影响力。今天大姚给大家分享4个.NET开源的AI模型LLM相关的项目框架,希望能为大家提供一些参考。https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel是一种开源的软件开发工具包(SDK),旨在将大型语言模型(LLM)如OpenAI、Azure

win11支持用户使用alt+tab快捷键的方式来调出桌面切换工具,但是最近有朋友遇到了win11alt+tab切换不了界面的问题,不知道是什么原因也不知道怎么解决。win11alt+tab切换不了界面什么原因:答:因为快捷键功能被禁用了,下面是解决方法:1、首先我们按下键盘“win+r”打开运行。2、接着输入“regedit”并回车打开组策略。3、然后进入“HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer”

在 Java 中,回车通常由换行符表示。Windows 系统中使用 "\r\n" 表示回车换行,而 Unix/Linux 系统中则使用 "\n"。读取包含回车的文本时,Java将这些字符视为普通字符。可以使用 BufferedReader 或 Scanner 类从输入流中读取文本,直到遇到回车换行符。

我们在安装win10系统之后,会发现里面自带有拼音输入法和五笔输入法,当我们要切换输入法的时候,快捷键一般是Alt+shift,但有些人不习惯,想要修改,今天小编来跟大家说说win10切换输入法快捷键如何设置的教程,大家一起来看看吧。1、“WIN+X键"或者"鼠标移动到左下角右击"调出系统功能菜单,单击控制面板;2、在时钟、语言和区域选项中,单击添加语言或更换输入法其中一个,均会跳到同一界面;3、点击左上角的高级设置选项;4、高级设置下面点击“更改语言栏热键”;5、

Vue中处理组件的动态加载和切换Vue是一个流行的JavaScript框架,它提供了各种灵活的功能来处理组件的动态加载和切换。在本文中,我们将讨论一些Vue中处理组件动态加载和切换的方法,并提供具体的代码示例。动态加载组件是指根据需要在运行时动态加载组件。这样可以提高应用程序的性能和加载速度,因为只有当需要时才会加载相关的组件。Vue提供了async和awa

Asetofpointsonaplainsurfacethatformsacurvesuchthatanypointonthatcurveisequidistantfromapointinthecenter(calledfocus)isaparabola.Thegeneralequationfortheparabolaisy=ax2+bx+cThevertexofaparabolaisthecoordinatefromwhichittakesthesharpestturnwhereasaisth


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1
強大的PHP整合開發環境