状态栏菜单项的c#记事本实现

本文关键字:记事本 实现 菜单项 状态栏 | 更新日期: 2023-09-27 17:49:52

我正在编写一个像记事本一样的windows应用程序,但采用MDI格式。我发现很多的样品但是没有一个实现在视图菜单项的状态栏,我的意思是在每个笔记本有一个菜单项命名视图和如果你点击这个项目你可以激活或禁用状态栏自动换行的选择并不是检查,如果你这样做,行和列数字出现在StatusBarLabel,请你告诉我我该如何实现这个记事本在我的应用程序的一部分吗?我为这个目标找到了这些用户定义的属性,但是它们不适合我!

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

状态栏菜单项的c#记事本实现

虽然我从来没有使用过这个函数,GetPositionFromCharIndex看起来就是你需要的。它给出了一个Point,它告诉我您将从单个函数中获得列和行信息。

现在回答太晚了,

根据我对你问题的理解,我认为你也想实现一个状态栏。为此,您可以将控件StatusStrip从工具箱添加到存在输入区域的表单中。

之后,您必须添加一个Status Label,其中将显示当前行号和插入符号在当前行的位置,即列号。您可以通过单击小按钮并从出现的列表中选择Status label来添加标签。它看起来就像:

这是可选的,但是您可以通过将对齐属性更改为右,将状态标签向右对齐(就像在Microsoft Notepad中一样)。如果在属性窗口中找不到对齐属性。您可以通过添加以下行将其手动添加到表单的Designer.cs文件中:

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

您也可以通过将border属性更改为Etched

来为左侧标签添加边框

您所描述的用户定义属性用于从多行文本框中获取当前行和列。

正如你提到的属性不为你工作,你可以他们在TextBox的SelectionChanged事件,所以它不断得到更新,而你在TextBox中移动光标。如果您使用这些属性,它将看起来像这样。

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

要隐藏状态栏,您可以通过以下方式切换其可见性:

StatusBar.Visible=!StatusBar.Visible;