admin 管理员组

文章数量: 1087135


2023年12月18日发(作者:php本地环境搭建总结)

winform中如何获得TextBox光标位置

winform中如何获得TextBox光标位置?第一反应是SelectionStart属性,结果发现在分方向选择内容时返回错误值,真正答案如下:

using System;

using entModel;

using ;

using pServices;

using g;

namespace WindowsApplication5

...{

public partial class Form1 : Form

...{

public Form1()

...{

InitializeComponent();

}

[DllImport("")]

private static extern bool GetCaretPos(out Point ppt);

private void Form1_Load(object sender, EventArgs e)

...{

= "jinjazz";

}

private void Form1_MouseDown(object sender, MouseEventArgs e)

...{

Point p;

GetCaretPos(out p);

int i=rIndexFromPosition(p);

= ng();

}

}

}

在zswang(偶最pf的伴水)的提醒下,上面方法存在两个遗漏,zswang的补充如下:

1、当输入焦点没有在编辑框中(比如有多个输入框),这样光标的位置获取并非指定。

当然可以考虑获取之前先Focus()一下。

2、GetCharIndexFromPosition()方法有缺陷,当光标在最后一个字符来回的时候数值不变-_-!!!得完善一下。

public virtual int GetCharIndexFromPosition(Point pt)

...{

int lParam = NG(pt.X, pt.Y);

int n = (int) ssage(new HandleRef(this, ), 0xd7, 0,

lParam); //EM_CHARFROMPOS = 0xd7

n = (n);

if (n < 0)

...{

return 0;

}

string text = ;

if (n >= )

...{

n = ( - 1, 0); //<<<<<<<

}

return n;

}


本文标签: 光标 位置 方法 环境 遗漏