Как я могу отображать массив строк определенным образом внутри TextBox? - PullRequest
0 голосов
/ 29 февраля 2012

Я делаю дипломный проект по машинному переводу для перевода с любого языка на английский язык.

Мое программное обеспечение принимает строку на исходном языке (SL), а затем под каждым словом исходного языка отображается все значения, упорядоченные в соответствии с их вероятностями ... что-то выглядит так

Word1      Word2     Word3
hit        bell      man
multiply             leg

Проблема в том, что мне нужно отобразить значения первого слова, затем я должен вернуться к первой строке, чтобы отобразить значения второго слова и так далее ... в том же текстовом поле!

Есть ли в C # способ вернуться к первой строке и написать рядом с существующими словами?

1 Ответ

1 голос
/ 29 февраля 2012

Вы можете управлять положением курсора (и выбором) с помощью свойств TextBox.SelectionStart и TextBox.SelectionLength.

Пример, если вы хотите переместить курсор до 3-го набора символов SelectionStart = 2 и SelectionLength = 0.

Итак, в качестве приложения Windows Forms - решение вашей проблемы

public class TextBoxEx : TextBox
{
    public TextBoxEx()
    { }

    public void GoTo(int line, int column)
    {
        if (line < 1 || column < 1 || this.Lines.Length < line)
            return;

        this.SelectionStart = this.GetFirstCharIndexFromLine(line - 1) + column - 1;
        this.SelectionLength = 0;
    }

    public int CurrentColumn
    {
        get { return this.SelectionStart - this.GetFirstCharIndexOfCurrentLine() + 1; }
    }

    public int CurrentLine
    {
        get { return this.GetLineFromCharIndex(this.SelectionStart) + 1; }
    }
}

ИЛИ

Просто добавьте этот класс в свой проект,

public static class Extentions
{
    public static void GoTo ( this TextBox Key , int Line , int Character )
    {
        if ( Line < 1 || Character < 1 || Key . Lines . Length < Line )
            return;

        Key . SelectionStart = Key . GetFirstCharIndexFromLine ( Line - 1 ) + Character - 1;
        Key . SelectionLength = 0;
        Key . Focus ( );
    }
} 

После добавления этого класса в ваш проект вы можете легко перемещаться по TextBox с помощью

TextBox . GoTo ( 1 , 1 ); // Navigate to the 1st line and the 1st character :)

Надеюсь, эта помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...