Реализация блокнота в 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;