Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从带包装的文本框中获取行数_C#_.net_Wpf_Textbox - Fatal编程技术网

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)。长度;