获取TextBox中的文本行数
本文关键字:文本 TextBox 获取 | 更新日期: 2023-09-27 18:27:08
我试图通过标签显示文本框中的文本行数。但是,问题是,如果最后一行是空的,标签必须显示空行之外的行号。
例如,如果它们是5行,最后一行为空,则标签应将行数显示为4。
谢谢。。
private void txt_CurrentVinFilter_EditValueChanged(object sender, EventArgs e)
{
labelCurrentVinList.Text = string.Format("Current VIN List ({0})", txt_CurrentVinFilter.Lines.Length.ToString());
}
实际上,上面是代码。。。必须更改为仅显示C#winforms中的无空行。
感谢
您也可以使用LinQ以较短的方式完成此操作。要计算行数并计算最后一行(如果它是空的):
var lines = tb.Lines.Count();
lines -= String.IsNullOrWhiteSpace(tb.Lines.Last()) ? 1 : 0;
并且只计算非空行:
var lines = tb.Lines.Where(line => !String.IsNullOrWhiteSpace(line)).Count();
这不会将任何空行计算为结束
int count = tb.Lines.Length;
while (count > 0 && tb.Lines[count - 1] == "") {
count--;
}
或者,如果您还想排除只包含空白的行
int count = tb.Lines.Length;
while (count > 0 && tb.Lines[count - 1].Trim(' ',''t') == "" ) {
count--;
}
如果WordWrap
设置为true
并且您想要显示的行数,请尝试:
int count = textBox1.GetLineFromCharIndex(int.MaxValue) + 1;
// Now count is the number of lines that are displayed, if the textBox is empty count will be 1
// And to get the line number without the empty lines:
if (textBox1.Lines.Length == 0)
--count;
foreach (string line in textBox1.Lines)
if (line == "")
--count;