C# textbox怎样获取里面文本有多少行???

用C#编辑记事本程序,状态栏里添加了显示“影响行数”,
怎么才能获取textbox里面的文本共多少行??还有光标当前所在的行数??
谢谢了

2楼的兄弟,你算列数的方法也太牛逼了吧,那要是文本 有几百万个字符,你那循环要几百万次呀。
最简单的得到行和列的方法:
int totalline = textBox1.GetLineFromCharIndex(textBox1.Text.Length) + 1;//得到总行数。该行数会随着文本框的大小改变而改变;若只认回车符为一行(不考虑排版变化)请用 总行数=textBox1.Lines.Length;(记事本2是这种方式)
int index = textBox1.GetFirstCharIndexOfCurrentLine();//得到当前行第一个字符的索引
int line = textBox1.GetLineFromCharIndex(index) + 1;//得到当前行的行号,从0开始,习惯是从1开始,所以+1.
int col = textBox1.SelectionStart - index + 1;//.SelectionStart得到光标所在位置的索引 减去 当前行第一个字符的索引 = 光标所在的列数(从0开始)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-12-02
这个问题问的不好。
文本(字符串)有多少行这个问题,有两种说法。
第一种情况是在内存中(doc)该文本有多少行,一般以回车符+换行符(Windows文本格式)作为行之间的分隔。既然是内存数据,所以很容易计算有多少行。
第二种情况是,在显示界面上(view),文本显示为多少行,这个行数取决于控件对文本的排版情况,该行数好像不容易取得。
第2个回答  2008-12-02
int i= textBox1.GetLineFromCharIndex(textBox1.Text.Length)+1;
MessageBox.Show(i.ToString());//i为textbox文本的行数
int j=textBox1.GetLineFromCharIndex(textBox1.SelectionStart)+1;
MessageBox.Show(j.ToString());//j为textbox中光标所在的行数
第3个回答  2008-12-02
int i= textBox1.GetLineFromCharIndex(textBox1.Text.Length)+1;
int j=textBox1.GetLineFromCharIndex(textBox1.SelectionStart)+1;
MessageBox.Show(j.ToString());
MessageBox.Show(i.ToString());
第4个回答  2008-12-02
private void status()
{

int start = 0;
int cursor = richTxt.SelectionStart;
int line = richTxt.GetLineFromCharIndex(cursor);
while (start < cursor)
{
if (richTxt.GetLineFromCharIndex(start) != line)
{
start++;
}
else break;
}
int col = cursor - start+1;
line++;
toolStripStatusLabel1.Text = statusStrip1.Text = "line " + line + ",col " + col;
}

很简单,一个函数就搞定
相似回答