这是我的第一篇文章,我尝试寻找解决方案但无济于事。
我正在尝试通过按下选项卡按钮来移动鼠标指针。 IE。选项卡选择下一个可选字段,我希望我的鼠标位于该可选字段上,以便鼠标通过点击选项卡在页面上移动。
否则,一种获取所选项目坐标并将其分配给鼠标的方法。
-遗漏信息的更新-
我的程序打开了另一个程序,我不确定如何在出现问题的那个程序上引用选定的项目。
谢谢。
最佳答案
将此事件处理程序添加到您的表单:
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();
关于c# - 将鼠标指针移动到选项卡按钮将您带到的位置 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35820567/