C# 获取textBox光标坐标

using System.Drawing;
using System.Windows.Forms;

public static class TextBoxExtend
{
    public static Point GetCursorCoordinates(this TextBox textBox1)
    {
        Graphics gc = textBox1.CreateGraphics();
        int wd = (int)gc.MeasureString("x", textBox1.Font).Width;
        int ht = (int)gc.MeasureString("x", textBox1.Font).Height;
        Point p2 = textBox1.GetPositionFromCharIndex(textBox1.SelectionStart - 1);
        Point p = textBox1.Location;
        if (textBox1.Text.Length > 0)
        {
            if (textBox1.Text[textBox1.SelectionStart - 1] == '\n' || textBox1.Text[textBox1.SelectionStart - 1] == '\r')
            {
                p.Y += p2.Y + 2 * ht;
            }
            else
            {
                p.X += p2.X + wd;
                p.Y += p2.Y + ht;
            }
        }
        else
        {
            p.Y += p2.Y + ht;
        }
        return p;
    }
}

转自http://blog.sina.com.cn/s/blog_5f3a7c2a0100q599.html

专门处理了按下回车位置错误的问题,并将方法加入TextBox扩展

调整了检测位置为光标位置

  • 0
    点赞
  • 1
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值