当前位置 : 主页 > 手机开发 > 无线 >

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

来源:互联网 收集:自由互联 发布时间:2021-06-10
这是我的第一篇文章,我已经尝试寻找解决方案,但无济于事. 我正试图按下标签按钮移动鼠标指针.即.选项卡选择下一个可选字段,我希望我的鼠标位于该可选字段上,以便鼠标通过点击标
这是我的第一篇文章,我已经尝试寻找解决方案,但无济于事.

我正试图按下标签按钮移动鼠标指针.即.选项卡选择下一个可选字段,我希望我的鼠标位于该可选字段上,以便鼠标通过点击标签在页面上移动.

否则,获取所选项目的方法是协调并将其分配给鼠标.

– 更新信息 –

我的程序打开另一个程序,我不知道如何引用该程序中所选项目,这是问题发生的地方.

谢谢.

将此事件处理程序添加到表单:

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();
网友评论