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扩展
调整了检测位置为光标位置