c#Richtextbox将插入符号移动到x,y位置

本文关键字:位置 移动 插入 符号 c#Richtextbox | 更新日期: 2023-09-27 18:03:07

可能重复:
RichTextBox C#设置插入符号位置winforms

我正在做一个项目,我正在从一个终端(tn3270(接口读取,该接口的插入符号位置列为X,Y,我想将其传递给显示完整终端接口的richtextbox。我试过在谷歌上搜索多种方法,但我能找到的似乎只是如何在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;
    }

我似乎快要接近了。但这一立场似乎并不正确。

c#Richtextbox将插入符号移动到x,y位置

我不确定是否应该这样做,但有一种方法:

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如果它的,2如果它的

检查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