这是我的第一篇文章,我已经尝试寻找解决方案,但无济于事. 我正试图按下标签按钮移动鼠标指针.即.选项卡选择下一个可选字段,我希望我的鼠标位于该可选字段上,以便鼠标通过点击标
我正试图按下标签按钮移动鼠标指针.即.选项卡选择下一个可选字段,我希望我的鼠标位于该可选字段上,以便鼠标通过点击标签在页面上移动.
否则,获取所选项目的方法是协调并将其分配给鼠标.
– 更新信息 –
我的程序打开另一个程序,我不知道如何引用该程序中所选项目,这是问题发生的地方.
谢谢.
将此事件处理程序添加到表单:private void control_Enter(object sender, EventArgs e) { if (sender is Control) { var control = (Control)sender; Cursor.Position = control.PointToScreen(new Point() { X = control.Width / 2, Y = control.Height / 2 }); } }
然后,您可以为其指定多个控件,使光标“移动”到这些控件的中心,例如:
button1.Enter += control_Enter;
或者您也可以在设计器中使用属性网格进行分配.
这种方法有一点需要注意,即如果用户使用鼠标单击控件,则光标也会居中.根据您的应用,这可能适合您,也可能不适合您.
根据问题的新要求进行更新:
由于您可能无权修改相关表单的源代码,因此可以将对正在显示的表单的引用传递给函数:
void SubscribeControlsOnEnter(Form form) { foreach (Control control in form.Controls) { control.Enter += control_Enter; } }
或类似的,可以遍历表单上包含的控件.如果表单具有嵌套在容器中的控件,则需要使用递归,但仍然可以使用此模式.
对于嵌套方法,订阅控件的函数可能看起来像这样(记住,Form派生自Control):
void SubscribeNestedControlsOnEnter(Control container) { foreach (Control control in container.Controls) { if (control.Controls.Count > 0) { SubscribeNestedControlsOnEnter(control); } else control.Enter += control_Enter; } }
这样,在显示表单时,您可以按以下方式调用:
Form1 form = new Form1(); SubscribeNestedControlsOnEnter(form); form.Show();