4

TextBoxWPFの要素内の特定の行の先頭のカレットインデックスをプログラムで取得する方法はありますか?

たとえば、20行目を選択するには:

my_textbox.GetLineIndex(20);

この情報を取得して、これを値として使用できるようにしたいと思いmy_textbox.SelectionStartます。

ありますがmy_textbox.ScrollToLine(20)、これは私が思わないインデックスを私に与えませんか?

4

3 に答える 3

3

組み込みの方法はないと思いますが、このような拡張方法を試すことができます。

public static int GetLineIndex(this TextBox textbox, int line)
{
    var text = textbox.Text;
    var thisLine = 0;
    for (var i = 0; i < text.Length; i++)
    {
        if (thisLine == line)
            return i;

        if (text[i] == '\n')
            ++thisLine;
    }

    throw new ArgumentOutOfRangeException();
}
于 2013-03-04T15:25:54.763 に答える
1

複数行のテキストボックスをボタンクリックするために使用できます

        string findText = "sample";
        int charIndex = txtSource.Text.IndexOf(findText);

        MessageBox.Show(txtSource.GetLineFromCharIndex(charIndex).ToString());

        or
        MessageBox.Show(txtSource.GetLineFromCharIndex(txtSource.Text.IndexOf("sample")).ToString());
于 2017-01-09T14:04:10.193 に答える
1

「GetCharacterIndexFromLineIndex」関数を使用するだけで、特定の行の先頭にあるカレットインデックスを取得できます。

この関数の詳細については、次のURLで確認できます。GetCharacterIndexFromLineIndexのMicrosoftドキュメント

これにより、必要に応じて行の先頭にあるカレットインデックスが返されます。

int startIndex = my_textbox.GetCharacterIndexFromLineIndex(lineNumber);
于 2020-07-17T08:59:07.593 に答える