2

Windows 8 Metro アプリのテキスト ボックスからカーソル位置の行と列を取得するにはどうすればよいですか? WinForms にあったような GetFirstCharIndexFromLine メソッドはありません。

4

1 に答える 1

2

これを実現する 1 つの方法を次に示します。

// Returns a one-based line number and column of the selection start
private static Tuple<int, int> GetPosition(TextBox text)
{
    // Selection start always reports the position as though newlines are one character
    string contents = text.Text.Replace(Environment.NewLine, "\n");

    int i, pos = 0, line = 1;
    // Loop through all the lines up to the selection start
    while ((i = contents.IndexOf('\n', pos, text.SelectionStart - pos)) != -1)
    {
        pos = i + 1;
        line++;
    }

    // Column is the remaining characters
    int column = text.SelectionStart - pos + 1;

    return Tuple.Create(line, column);
}

これにより、行番号と列番号が取得されます。

于 2012-10-02T01:50:19.097 に答える