Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c#状态栏菜单项中实现记事本_C#_Textbox_Statusbar_Multiline_Notepad - Fatal编程技术网

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

在c#状态栏菜单项中实现记事本,c#,textbox,statusbar,multiline,notepad,C#,Textbox,Statusbar,Multiline,Notepad,我正在编写一个类似记事本的windows应用程序,但采用MDI格式。我找到了很多这样的示例,但没有一个实现了视图菜单项中的状态栏,我的意思是,在每个记事本中都有一个名为“视图”的菜单项,如果单击该项,则可以在未选中“换行”选项的情况下激活或停用状态栏,如果这样做,行号和列号将显示在状态栏标签中,你能告诉我如何在我的应用程序中实现记事本的这一部分吗?我找到了这些用户定义的属性,但我认为它们不适合我 public int CurrentColumn { get { return textB

我正在编写一个类似记事本的windows应用程序,但采用MDI格式。我找到了很多这样的示例,但没有一个实现了视图菜单项中的状态栏,我的意思是,在每个记事本中都有一个名为“视图”的菜单项,如果单击该项,则可以在未选中“换行”选项的情况下激活或停用状态栏,如果这样做,行号和列号将显示在状态栏标签中,你能告诉我如何在我的应用程序中实现记事本的这一部分吗?我找到了这些用户定义的属性,但我认为它们不适合我

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

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

虽然我从未使用过这个函数,但看起来像是您需要的。它给出了一个要点,告诉我您可以从单个函数中获得列和行信息


我希望这能有所帮助。

回答这个问题太晚了,但是

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

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

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

     this.StatusLabel.Alignment=System.Windows.Forms.ToolStripItemAlignment.Right;
还可以通过将border属性更改为蚀刻,将边框添加到左侧标签中

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

正如您所提到的,这些属性不适用于您,您可以在TextBox的SelectionChanged事件中使用它们,以便在您移动文本框中的光标时不断更新。如果您正在使用这些属性,它将如下所示

private void TextBox_SelectionChanged(object sender, EventArgs e)
        {
            StatusLabel.Text = String.Format("Ln {0}, Col {1}", CurrentLine, CurrentColumn);
        }
要隐藏状态栏,可以通过以下方式切换其可见性:

StatusBar.Visible=!StatusBar.Visible;