将当前光标位置显示为当前行和当前列?

时间:2013-02-28 22:12:15

标签: c# winforms cursor

我正在处理使用RichtextBoxMenustrip和更多控件的Windows窗体应用程序。

我做了一些工作,但无法让它发挥作用。当我的鼠标光标在RichTextBox中移动时,我想要更改自动更改位置,就像在简单的记事本上一样。

我的位编码是......

我希望如此,当我的鼠标光标移动时,它会改变状态栏上的动态位置

private void sizeToolStripMenuItem_Click(object sender, EventArgs e)
{        
    int line = richTextBox1.GetLineFromCharIndex(richTextBox1.SelectionStart);
    int column = richTextBox1.SelectionStart - richTextBox1.GetFirstCharIndexFromLine(line);
    toolStripStatusLabel5.Text ="Line"+" "+ line.ToString();
    toolStripStatusLabel6.Text = " Column" + " " + line.ToString();
    toolStripStatusLabel3.Text= Cursor.Position.ToString(); // where is my mouse cursor at this Time like that x and y cordinate 330,334
}

4 个答案:

答案 0 :(得分:3)

每次按回车键时

显示您的线路。 代码如下:::: ----

private void Key_Down(object sender, KeyEventArgs e)
{
    if (e.KeyData == Keys.Enter)
    {
        int line = richTextBox1.GetLineFromCharIndex(richTextBox1.SelectionStart);
        int column = richTextBox1.SelectionStart - richTextBox1.GetFirstCharIndexFromLine(line);

        toolStripStatusLabel5.Text = "Line" + " " + line.ToString();
        toolStripStatusLabel6.Text = " Column" + " " + column.ToString();
        toolStripStatusLabel3.Text = Cursor.Position.ToString(); // where is my mouse cursor at this Time like that x and y cordinate 330,334
        Update();
    }
}

答案 1 :(得分:1)

您可以订阅RichTextBox MouseMove事件,以使用当前鼠标位置更新ToolStrip标签

示例:

private void richTextBox1_MouseMove(object sender, MouseEventArgs e)
{
    toolStripStatusLabel3.Text = string.Format("X={0}, Y={1}", e.X, e.Y);
}

或者如果您希望它显示与RichTextBox相关的位置,您可以使用Location中的MouseEventArgs,这将返回RichTextBox内的位置( topleft of textbox = 0,0)

private void richTextBox1_MouseMove(object sender, MouseEventArgs e)
{
    toolStripStatusLabel3.Text = string.Format("X={0}, Y={1}", e.Location.X, e.Location.Y);
}

答案 2 :(得分:1)

如果要自动更新位置,则应使用richtextbox中的MouseMove事件。当您移动鼠标时,它总是在更新。此外,来自MouseMove调用的“MouseEventArgs e”可以为您提供richtextbox中的光标位置。

答案 3 :(得分:1)

我已经在StackoverFlow和甜蜜的用户(程序员)的帮助下完成了。 谢谢你的答复。我的代码是

private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
    {

        if (e.Button == MouseButtons.Left)
        {
            int line = richTextBox1.GetLineFromCharIndex(richTextBox1.SelectionStart);
            int column = richTextBox1.SelectionStart - richTextBox1.GetFirstCharIndexFromLine(line);

            toolStripStatusLabel5.Text = "Line" + " " + line.ToString();
            toolStripStatusLabel6.Text = " Column" + " " + line.ToString();
            toolStripStatusLabel3.Text = Cursor.Position.ToString(); // where is my mouse cursor at this Time like that x and y cordinate 330,334
            Update();

        }

    }