Реализация блокнота в C# Строка состояния menuItem

Я пишу приложение для Windows, как блокнот, но в формате MDI. Я нашел много примеров для этого, но ни один из них не реализовал строку состояния, которая находится в пункте меню представления, я имею в виду, что в каждом блокноте есть меню Элемент с именем View, и если вы щелкнете по этому элементу, вы сможете активировать или деактивировать строку состояния, когда опция переноса слов не отмечена, и если вы сделаете это, номера строк и столбцов появятся в StatusBarLabel, подскажите, пожалуйста, как мне реализовать эта часть блокнота в моем приложении? Я нашел эти определяемые пользователем свойства для этой цели, но у меня они не работают!

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

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

2 ответа

Решение

Я нашел эту ссылку! Это сработало для меня!

http://weblogs.sqlteam.com/mladenp/archive/2007/10/19/C--Get-current-Caret-Line-and-Column-in-a.aspx

Хотя я никогда не использовал эту функцию, TextBoxBase.GetPositionFromCharIndex выглядит так, как вам нужно. Он дает Point, который говорит мне, что вы получите информацию о столбцах и строках из одной функции.

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

Слишком поздно отвечать, но,

Насколько я понимаю ваш вопрос, я думаю, вы также хотите реализовать строку состояния. Для этого вы можете добавить элемент управления StatusStrip из панели инструментов в форму, в которой существует область ввода.

После этого вам нужно будет добавить метку состояния, где вы будете отображать текущий номер строки и положение курсора в текущей строке, то есть номер столбца. Вы можете Добавить метку, щелкнув маленькую кнопку и выбрав Метка состояния из появившегося списка. Это будет выглядеть, как это:

Это необязательно, но вы можете выровнять метку состояния по правому краю (как в Microsoft Notepad), добавив для свойства выравнивания значение Right. Если вы не можете найти свойство выравнивания в окне свойств. Вы можете вручную добавить его в файл формы Designer.cs, добавив следующую строку:

     this.StatusLabel.Alignment=System.Windows.Forms.ToolStripItemAlignment.Right;

Вы также можете добавить границу к меткам слева, изменив свойство Border на Etched.

Описанное пользователем свойство используется для получения текущей строки и столбца из MultiLine TextBox.

Как вы упомянули, свойства не работают для вас, вы можете использовать их в событии SelectionChanged TextBox, чтобы оно постоянно обновлялось, пока вы перемещаете курсор в TextBox. Если вы используете эти свойства, это будет выглядеть так.

private void TextBox_SelectionChanged(object sender, EventArgs e)
        {
            StatusLabel.Text = String.Format("Ln {0}, Col {1}", CurrentLine, CurrentColumn);
        }

Чтобы скрыть строку состояния, вы можете переключить ее видимость:

StatusBar.Visible=!StatusBar.Visible;
Другие вопросы по тегам