
#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中有光标、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)