[DllImport("user32.dll")]
static extern bool CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidth, int nHeight);
[DllImport("user32.dll")]
static extern bool DestroyCaret();
[DllImport("user32.dll")]
static extern bool ShowCaret(IntPtr hWnd);
[DllImport("User32.dll")]
static extern bool HideCaret(IntPtr hWnd);
[DllImport("User32.dll")]
static extern bool SetCaretPos(int x, int y);
[DllImport("user32.dll")]
static extern bool GetCaretPos(out Point ppt);
eg:
private void myTextEdit_MouseDown(object sender, MouseEventArgs e)
{
//1、光标移至文本末端(可避免文本处于选中转态)
myTextEdit.SelectionStart = ccbCatalogTemplete.Text.Length;
myTextEdit.SelectionLength = 0;
//2、若不显示光标,使用DestroyCaret(),HideCaret方法可能无效
//3、创建自定义光标,并显示(原光标则默认不显示)
CreateCaret(ccbCatalogTemplete.Handle, IntPtr.Zero, 1, 15);
ShowCaret(myTextEdit.Handle);
myTextEdit.MouseDown -= myTextEdit_MouseDown;
}
private void myTextEdit_Leave(object sender, EventArgs e)
{
myTextEdit.MouseDown += myTextEdit_MouseDown;
}