C#如何获取reachtextbox光标的屏幕坐标

C#如何获取reachtextbox光标的屏幕坐标,第1张

       #region 得到光标在屏幕上的位置

        [DllImport("user32")]

         public static extern bool GetCaretPos(out Point lpPoint);

         [DllImport("user32dll")]

         private static extern IntPtr GetForegroundWindow();

         [DllImport("user32dll")]

         private static extern IntPtr GetFocus();

         [DllImport("user32dll")]

         private static extern IntPtr AttachThreadInput(IntPtr idAttach, IntPtr idAttachTo, int fAttach);

         [DllImport("user32dll")]

         private static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);

         [DllImport("kernel32dll")]

         private static extern IntPtr GetCurrentThreadId();

         [DllImport("user32dll")]

         private static extern void ClientToScreen(IntPtr hWnd, ref Point p);

         private Point CaretPos()

         {

             IntPtr ptr = GetForegroundWindow();

             Point p = new Point();

             //得到Caret在屏幕上的位置   

             if (ptrToInt32() != 0)

             {

                 IntPtr targetThreadID = GetWindowThreadProcessId(ptr, IntPtrZero);

                 IntPtr localThreadID = GetCurrentThreadId();

                 if (localThreadID != targetThreadID)

                 {

                     AttachThreadInput(localThreadID, targetThreadID, 1);

                     ptr = GetFocus();

                     if (ptrToInt32() != 0)

                     {

                         GetCaretPos(out   p);

                         ClientToScreen(ptr, ref   p);

                     }

                     AttachThreadInput(localThreadID, targetThreadID, 0);

                 }

             }

             return p;

         }

         #endregion

private void AddTabitem(string filePath, mode fileMode)

{

if (fileMode == modeopenFile)

{

if (FileExists(filePath))

{

RichTextBox mcRTB = new RichTextBox();

mcRTBKeyDown += new KeyEventHandler(LineNumber);

//rest of the code goes here

}

}

}

mcRTBKeyDown += new KeyEventHandler(LineNumber);

private void LineNumber(object sender, KeyEventArgs e)

{

TextPointer tp1 = rtbList[EditorTabcontrolSelectedIndex]SelectionStartGetLineStartPosition(0);

TextPointer tp2 = rtbList[EditorTabcontrolSelectedIndex]SelectionStart;

int column = tp1GetOffsetToPosition(tp2);

int someBigNumber = intMaxValue;

int lineMoved, currentLineNumber;

rtbList[EditorTabcontrolSelectedIndex]SelectionStartGetLineStartPosition(-someBigNumber, out lineMoved);

currentLineNumber = -lineMoved;

string LineColumnLabel;

//LineColumnLabelContent ="Line:" + currentLineNumberToString() +" Column:" + columnToString();

LineColumnLabel ="Line:" + currentLineNumberToString() +" Column:" + columnToString();

}

在MSDN(>

以上就是关于C#如何获取reachtextbox光标的屏幕坐标全部的内容,包括:C#如何获取reachtextbox光标的屏幕坐标、wpf如何知道textbox中有光标、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9452573.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存