c# - 将鼠标指针移动到选项卡按钮将您带到的位置 C#

标签 c# winforms

这是我的第一篇文章,我尝试寻找解决方案但无济于事。

我正在尝试通过按下选项卡按钮来移动鼠标指针。 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/

相关文章:

c# - Moq 定义严格的模拟

c# - DNN : Using multiple web user controls in one module and showing different controls in different pages

c# - 在托管代码(C++、C、C++/CLI、C#)中使用非托管代码时处理错误

c# - 执行 Response.Redirect 从同一站点上的一个页面到另一个页面的正确方法

c# - 等待 Task.Factory.FromAsync(BeginXxx, EndXxx) 后 HttpContext 为空

c# - 激活 C# Win 窗体的 MessageBox 对话框

c# - winforms中的验证文本框

c# - 当包含 "$"的文本时,Regex.IsMatch 不起作用

c# - BrowseForFolder 对话框 : center and make TopMost

c# - 在 Windows 窗体中动态调用函数