28
2012
03

C# Winfrom中光标的行号和列号及光标位置

private void timer2_Tick(object sender, EventArgs e)
{
//int total = richTextBox1.GetLineFromCharIndex(richTextBox1.Text.Length) + 1;
//int total = richTextBox1.Lines.Length;//得到总行数。
int index = richTextBox1.GetFirstCharIndexOfCurrentLine();//得到当前行第一个字符的索引!!
int line = richTextBox1.GetLineFromCharIndex(index) + 1;//得到当前行的行号
int col = richTextBox1.SelectionStart - index + 1;
//.SelectionStart得到光标所在位置的索引 减去 当前行第一个字符的索引 = 光标所在的列数(从0开始)
toolStripStatusLabel1.Text = "行 " + line;
toolStripStatusLabel2.Text = "列 " + col;
}

//显示光标所在行数与列数
private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{//调用显示状态的自定义函数
state(sender, e);
}

private void status(object sender, EventArgs e)
{ //显示状态的自定义函数
int line = this.textBox1.GetLineFromCharIndex(textBox1.SelectionStart);
int col;
int start = 0;
int cursor = textBox1.SelectionStart;
while (start < cursor)
{
if (line == this.textBox1.GetLineFromCharIndex(start))
{
break;
}
else
start++;
}
col = cursor - start;
line++;
col++;
toolStripStatusLabel1.Text = "( line " + line + " col " + col + " )";
}
« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。