C#中获取文本框中光标所在位置

来源:互联网 发布:sql表格联合主键 编辑:程序博客网 时间:2024/05/21 11:55
 private void ScrollPosition(object sender, EventArgs e)
        {
            Point p = GetCursorPos(this.txtDate.Handle.ToInt32());
            panel1.AutoScrollPosition = new Point(p.X, p.Y);
        }
        const int EM_GETSEL = 0xB0;
        const int EM_LINEFROMCHAR = 0xC9;
        const int EM_LINEINDEX = 0xBB;
        [DllImport("user32.dll", EntryPoint = "SendMessage")]
        public static extern int SendMessage(
            int hwnd,
            int wMsg,
            int wParam,
            ref int lParam
        );
        private Point GetCursorPos(int TextHwnd)
        {
            int i = 0, j = 0, k = 0;
            int lParam = 0, wParam = 0;
            i = SendMessage(TextHwnd, EM_GETSEL, wParam, ref lParam);
            j = i / 65536;
            int lineNo = SendMessage(TextHwnd, EM_LINEFROMCHAR, j, ref lParam) + 1;
            k = SendMessage(TextHwnd, EM_LINEINDEX, -1, ref lParam);
            int colNo = j - k + 1;
            Point ret = new Point(lineNo, colNo);
            return ret;
        }
原创粉丝点击