winforms 获取TextBox中的文本行数

qlvxas9a  于 2023-10-23  发布在  其他
关注(0)|答案(3)|浏览(446)

我试图通过标签显示文本框中的文本行数。但是,如果最后一行是空的,标签必须显示没有空行的行号。
例如,如果它们是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中的非空行。
谢谢

q5lcpyga

q5lcpyga1#

您也可以使用LinQ以更短的方式完成此操作。要计算行数并在最后一行为空时将其排除,请执行以下操作:

var lines = tb.Lines.Count();
lines -= String.IsNullOrWhiteSpace(tb.Lines.Last()) ? 1 : 0;

只计算非空行:

var lines = tb.Lines.Where(line => !String.IsNullOrWhiteSpace(line)).Count();
qcuzuvrc

qcuzuvrc2#

这将不计算结尾处的任何空行

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--;
}
vhmi4jdf

vhmi4jdf3#

如果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;

相关问题