winform应用程序中的焦点设置[英] focus setting in winform application

问题描述

你好
我想把焦点放在表格上.
意味着在我的应用程序中,当我运行此应用程序时,一些标签、文本框和复选框将焦点位于文本框中.但我希望焦点位于表单中,因此如果是,我可以将焦点设置为表单,然后告诉我这样做的方法.因为我想在我启动应用程序时使用表单的按键事件

推荐答案

你不能以你想要的方式将焦点设置到表单- 它没有任何用户可编辑的部分 - 焦点转到文本框,因为它是 Tab Order 中第一个可以接受用户输入的控件.

如果您想为表单中的所有控件以及表单本身处理 KeyDown 事件,那么您必须在设计器中或表单 Load 事件中为每个控件添加处理程序:
private void myForm_Load(对象 发送者,EventArgs e){foreach (控制 c in 控制){c.KeyDown += new KeyEventHandler(myForm_KeyDown);}}void myForm_KeyDown(object sender, KeyEventArgs e){...}

您可以将表单的KeyPreview属性设置为True

来自 MSDN:
当此属性设置为 true 时,表单将接收所有 KeyPress、KeyDown 和 KeyUp 事件.在窗体的事件处理程序完成对击键的处理之后,击键被分配给具有焦点的控件.例如,如果 KeyPreview 属性设置为 true,并且当前选定的控件是 TextBox,则在表单的事件处理程序处理击键后,TextBox 控件将接收被按下的键.要仅在表单级别处理键盘事件并且不允许控件接收键盘事件,请将表单的 KeyPress 事件处理程序中的 KeyPressEventArgs..::.Handled 属性设置为 true.


示例:
受保护 覆盖 void OnKeyDown(KeyEventArgs e){//检查Ctrl.Xif (e.KeyCode == Keys.X && Control.ModifierKeys == Keys.Control){//你的代码来处理Ctrl.Xe.Handled = true;//决定焦点控件是否接收击键.}}



问候
米歇尔

试试这个可能对你有帮助
this.Focus();


谢谢
--RA

本文地址:https://www.itbaoku.cn/post/1395025.html