C# 如何触发 tabcontrol 特定选项卡中的按键事件?
我的表单中有一个 tabControl1,其中包含三个名为 TabPage1、TabPage2 和 TabPage3 的 TabPage。
当 TabPage 2 获得焦点时,我需要引发一个按键事件(用于导航的箭头键)。 不应在其他选项卡页中引发此事件。
有人知道怎么做吗?
I have an tabControl1 in my form with three TabPages named TabPage1, TabPage2 and TabPage3.
When TabPage 2 has focus I need to raise an key event (arrow keys for navigation).
This event should not be raised in the other TabPages.
Anybody know how?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
在选定的事件处理程序上,您可以将发送者强制转换为正确的控件并检查其名称。如果事件是从 TabPage2 生成的,您可以触发按键事件。
像这样的东西
On Selected event handler you can cast the sender to the proper control and check for it's name. If the event is generated from TabPage2 you can fire the key event.
Something like this
您需要从 TabControl 派生自己的控件,以便可以拦截箭头键并生成事件。将新类添加到您的项目中并粘贴下面所示的代码。编译。将新控件从工具箱顶部拖放到窗体上。
表单中的示例用法:
You'll need to derive your own control from TabControl so that you can intercept the arrow keys and generate an event. Add a new class to your project and paste the code shown below. Compile. Drop the new control from the top of the toolbox onto your form.
Sample usage in a form:
这段代码似乎有效
因此,当我选择 tabPage2 时,当我按向左箭头键时,消息框会告诉我“内部”。
可能不是正确的做法,但至少现在有效......
This code seems to work
So when I have selected the tabPage2 a Messagebox tells me "inside" when i press left arrow key.
Probalby not the correct thing to do thing but atleast it works for now...
我在 VB .NET 中完成了此操作,如果您确实需要,我可以将其发布在 C# 中,但这应该向您展示如何处理事件的捕获。
现在您只需要使用实际的按键即可。
迈克尔·萨切特
I did this in VB .NET, I can post it in C# if you really need it but this should show you how to handle the catching of the event.
And now you just need to use the actual key presses.
Michael Sarchet
msarchet 的答案的 AC# 版本:
我希望这对您有帮助:)
A C# version of msarchet's answer:
I hope this helps you :)