13

C#を使用してWinForms TextBoxの指定された行までスクロールするにはどうすればよいですか?

ありがとう

4

4 に答える 4

28

選択範囲までスクロールする方法は次のとおりです。

textBox.ScrollToCaret();

指定した行までスクロールするには、TextBox.Linesプロパティをループし、長さを合計して指定した行の先頭を見つけ、TextBox.SelectionStartを設定してキャレットを配置します。

これに沿った何か(テストされていないコード):

int position = 0;

for (int i = 0; i < lineToGoto; i++)
{
    position += textBox.Lines[i].Length;
}

textBox.SelectionStart = position;

textBox.ScrollToCaret();
于 2009-04-11T07:16:03.243 に答える
10
    private void MoveCaretToLine(TextBox txtBox, int lineNumber)
    {
        txtBox.HideSelection = false;
        txtBox.SelectionStart = txtBox.GetFirstCharIndexFromLine(lineNumber - 1);
        txtBox.SelectionLength = txtBox.Lines[lineNumber - 1].Length;
        txtBox.ScrollToCaret();
    }
于 2012-10-28T03:17:39.810 に答える
0

適切なキャレット位置を見つけるためのループの答えには、いくつかの問題があります。まず、大きなテキストボックスの場合、速度が遅くなります。第二に、タブ文字はそれを混乱させるようです。より直接的なルートは、必要な行のテキストを使用することです。

String textIWantShown = "Something on this line.";
int position = textBox.Text.IndexOf(textIWantShown);
textBox.SelectionStart = position;
textBox.ScrollToCaret();

もちろん、このテキストは一意である必要がありますが、textBox.Lines配列から取得できます。私の場合、表示しているテキストの前に行番号を付けていたので、これで作業が楽になりました。

于 2009-05-19T14:45:47.043 に答える