我正在开发一个项目,我正在从终端(tn3270)接口读取,该接口的插入符号位置为X,Y,我想将其传递给显示完整终端接口的richtextbox。我尝试过google多种方式,但我似乎只能找到如何在richtextbox中获取插入符号的x,y位置。
我希望有一个可以
的功能private void SetCaretLocation(iX,iY);
:编辑:
private void SetCaretPos(int iX,int iY)
{
int iLen = 0;
int iRow = 0;
foreach (string str in richTextBox1.lines)
{
iRow++;
iLen += str.Length;
if (iRow == iX)
break;
}
iLen += iY;
richTextBox1.SelectionStart = iLen;
}
我似乎正在接近一些。但这个位置似乎没有正确匹配。
答案 0 :(得分:1)
我不确定这是不是应该如何完成,而是它的单向:
private void SetCaretPosition(int rows, int col)
{
int curPos = 0;
if (richTextBox1.Lines.Length >= rows)
{
for (int i = 0; i < rows - 1; ++i)
{
curPos += richTextBox1.Lines[i].Length + 1; //add 1 for the newline character
}
richTextBox1.SelectionStart = curPos + col;
}
else
richTextBox1.SelectionStart = richTextBox1.TextLength;
richTextBox1.ScrollToCaret();
}
编辑:
我没有意识到你也发布了一个编辑。您需要考虑新的行字符。 1如果是\ n,2如果是\ r \ n
答案 1 :(得分:0)
检查SelectionStart方法 您可以使用RichTextBox控件的SelectionStart属性来“获取或设置文本框中所选文本的起始点。”
http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.aspx
代码示例如下:
http://msdn.microsoft.com/en-us/library/system.windows.forms.textboxbase.selectionstart.aspx