C# 从带包装的文本框中获取行数
我想得到有包装的文本框的行数。以下代码不起作用C# 从带包装的文本框中获取行数,c#,.net,wpf,textbox,C#,.net,Wpf,Textbox,我想得到有包装的文本框的行数。以下代码不起作用 void txt_Loaded(object sender, RoutedEventArgs e) { TextBox t = (TextBox)sender; var count = t.LinesCount; // wrong; // or var lineCount = t.Text.Split(new[] {'\n','r'}).length; } 我有三行,但是var lineCo
void txt_Loaded(object sender, RoutedEventArgs e)
{
TextBox t = (TextBox)sender;
var count = t.LinesCount; // wrong;
// or
var lineCount = t.Text.Split(new[] {'\n','r'}).length;
}
我有三行,但是
var lineCount=t.Text.Split(new[]{'\n','r'}).length代码>返回4。您的代码中有一个输入错误,正在查找字母r
,而不是回车\r
尝试var lineCount=t.Text.Split(新[]{'\n','\r'}).length代码>
另一种选择是如上所述进行拆分,然后将每行的长度除以单行中可以包含的字符数。您可能需要计算此值,因为TextBox似乎没有列
属性。如果要查找换行数,可以使用。
作为参数,您可以传递最后一个字符(对应于Text.Lenght
)。
或者。
第一个方法返回一个从零开始的索引,第二个方法从1开始计数。
int WrappedLines2 = TextBox.LineCount;
可以使用Split().Count()
int WrappedLines1 = TextBox.GetLineIndexFromCharacterIndex(TextBox.Text.Length) + 1;
int LineFeedsCount = TextBox.Text.Split(new[] { "\n" }, StringSplitOptions.None).Count();
TextBox1.TextWrapping = TextWrapping.NoWrap;
int LineFeedsCount = TextBox1.LineCount;
如果不想计算空行数,请使用StringSplitOptions.RemoveEmptyEntries
作为选项参数。
您可以将TextWrapping
属性设置为.NoWrap
并使用.LineCount
计算行数,以验证行数是否正确
int WrappedLines1 = TextBox.GetLineIndexFromCharacterIndex(TextBox.Text.Length) + 1;
int LineFeedsCount = TextBox.Text.Split(new[] { "\n" }, StringSplitOptions.None).Count();
TextBox1.TextWrapping = TextWrapping.NoWrap;
int LineFeedsCount = TextBox1.LineCount;
我想我找到了行计数
不起作用的原因
文本框实际上位于数据列中。我将宽度设置为2*
<telerik:GridViewDataColumn Header="Info" DataMemberBinding="{Binding Info}" Width="2*">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBox
AcceptsReturn="True"
TextWrapping="Wrap"
Text="{Binding Info, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Loaded="TextBox_Loaded"/>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>`.
`.
Width属性会导致此问题。如果我移除它,它就会工作。但是我需要宽度,不确定为什么和如何?如果它总是返回1。这不是错别字,我在发现它的时候,我想答案也有错别字,因为原来的问题是针对VB.Net的,而C#解决方案从未被检查过。如果您检查文档中的String.Split(..),参数值'r'
将简单地按字母r
的任何外观分割文本属性。为什么不使用System.Environment.NewLine类似于t.Text.Split(new[]{Environment.NewLine},StringSplitOptions.None)。长度;