将鼠标光标位置更改为焦点控件

西亚马克·费多斯(Siamak Ferdos)

我想将鼠标光标位置更改为焦点控件。我通过键盘更改焦点(Enter键)。我怎样才能做到这一点?

塔瓦

干得好:

void goToActive()
{
    Control ctl = this.ActiveControl;
    this.Cursor = new Cursor(Cursor.Current.Handle);
    if (ctl != null) Cursor.Position = ctl.PointToScreen(new Point(3,3));
}

要从任何地方捕获导航键,请覆盖ProcessCmdKey,如此处所示..:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == Keys.Enter) { goToActive(); return true;}
    return base.ProcessCmdKey(ref msg, keyData);
}

更新:如果您不想按Enter键而是Enter控件事件,请按以下步骤操作:

我们在Form.Shown事件中注册所有控件

private void Form1_Shown(object sender, EventArgs e)
{
    registerAllControls(this);
}

这将递归地监管所有控件。您可能需要根据需要排除某些内容,例如检查名称,类型或Tag..:

void registerAllControls(Control ctl)
{
    ctl.Enter += ControlReceivedFocus;
    foreach (Control ct in ctl.Controls)
    {
        registerAllControls(ct);
    }
}

goToActive仅当我们不在这里时,才调用修改后的函数..:

void ControlReceivedFocus(object sender, EventArgs e)
{
    if (!((sender as Control).ClientRectangle
        .Contains(PointToClient(MousePosition))))
    {
        goToActive(sender);
    }
}

我已经修改了该函数以包括调用控件,以使事情变得更简单。

void goToActive(object sender)
{
    Control ctl = sender as Control;
    this.Cursor = new Cursor(Cursor.Current.Handle);
    Cursor.Position = ctl.PointToScreen(new Point(3, 3));
    if (sender is TextBox) Cursor = Cursors.IBeam; 
    else Cursor = Cursors.Default;
}

请注意,Cursor倾向于拾取错误的形状;我将它设置为Default,或者对于TextBoxesIBeam

我已经对其进行了测试,但是可以注意到,我宁愿不要让我的光标跟踪我的焦点。.使其成为一个选项,而不是一个功能!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将鼠标光标更改为等待图标,并防止用户单击任何控件

来自分类Dev

将鼠标光标更改为XCB中的标准手形光标

来自分类Dev

如何在控件内更改鼠标光标?

来自分类Dev

如何在控件内更改鼠标光标?

来自分类Dev

摆动:将光标更改为等待光标

来自分类Dev

将GetStockObject(WHITE_BRUSH)更改为GetStockObject(GREY_BRUSH)时,鼠标光标丢失

来自分类Dev

将鼠标光标更改为WPF中禁用按钮上悬停时的“停止”指针

来自分类Dev

文本框只读时如何将鼠标光标更改为“否”?

来自分类Dev

将鼠标悬停在表格中的文本上时,如何停止将光标更改为I栏?

来自分类Dev

无法将光标更改为jpg文件

来自分类Dev

无法将帧光标更改为自定义光标

来自分类Dev

将默认光标更改为忙光标无法正常工作

来自分类Dev

vmware:将焦点更改为来宾时,鼠标指针会停止一秒钟

来自分类Dev

MFC将鼠标光标悬停在CEdit控件上

来自分类Dev

鼠标光标更改为32位,但不更改为64位

来自分类Dev

QLineEdit:将光标位置设置为从焦点开始

来自分类Dev

QLineEdit:将光标位置设置为从焦点开始

来自分类Dev

如何在WPF中更改鼠标光标的指向位置

来自分类Dev

将鼠标光标位置设置为对象标题

来自分类Dev

将剪辑路径位置移动到鼠标光标

来自分类Dev

IntelliJ将鼠标光标移动到随机位置

来自分类Dev

如何将光标准确插入鼠标位置?

来自分类Dev

更改标签时如何在鼠标光标下的客户端上设置焦点?

来自分类Dev

如何将按钮光标更改为手形?

来自分类Dev

将光标更改为标签范围内的指针

来自分类Dev

如何停止将光标更改为文本上方的垂直箭头?

来自分类Dev

将光标指针更改为自定义图标

来自分类Dev

jQuery执行功能时将光标从“ wait”更改为“ auto”

来自分类Dev

将Excel默认光标更改为箭头指针

Related 相关文章

  1. 1

    将鼠标光标更改为等待图标,并防止用户单击任何控件

  2. 2

    将鼠标光标更改为XCB中的标准手形光标

  3. 3

    如何在控件内更改鼠标光标?

  4. 4

    如何在控件内更改鼠标光标?

  5. 5

    摆动:将光标更改为等待光标

  6. 6

    将GetStockObject(WHITE_BRUSH)更改为GetStockObject(GREY_BRUSH)时,鼠标光标丢失

  7. 7

    将鼠标光标更改为WPF中禁用按钮上悬停时的“停止”指针

  8. 8

    文本框只读时如何将鼠标光标更改为“否”?

  9. 9

    将鼠标悬停在表格中的文本上时,如何停止将光标更改为I栏?

  10. 10

    无法将光标更改为jpg文件

  11. 11

    无法将帧光标更改为自定义光标

  12. 12

    将默认光标更改为忙光标无法正常工作

  13. 13

    vmware:将焦点更改为来宾时,鼠标指针会停止一秒钟

  14. 14

    MFC将鼠标光标悬停在CEdit控件上

  15. 15

    鼠标光标更改为32位,但不更改为64位

  16. 16

    QLineEdit:将光标位置设置为从焦点开始

  17. 17

    QLineEdit:将光标位置设置为从焦点开始

  18. 18

    如何在WPF中更改鼠标光标的指向位置

  19. 19

    将鼠标光标位置设置为对象标题

  20. 20

    将剪辑路径位置移动到鼠标光标

  21. 21

    IntelliJ将鼠标光标移动到随机位置

  22. 22

    如何将光标准确插入鼠标位置?

  23. 23

    更改标签时如何在鼠标光标下的客户端上设置焦点?

  24. 24

    如何将按钮光标更改为手形?

  25. 25

    将光标更改为标签范围内的指针

  26. 26

    如何停止将光标更改为文本上方的垂直箭头?

  27. 27

    将光标指针更改为自定义图标

  28. 28

    jQuery执行功能时将光标从“ wait”更改为“ auto”

  29. 29

    将Excel默认光标更改为箭头指针

热门标签

归档