C#WPF RichTextboxf检查是否有任何文本

时间:2017-01-19 07:53:13

标签: c# wpf

我不想检查 RichTextbox 的内容,如果内容为空则更好。 我通过代码调试,发现在我从框中得到的字符串中有“\ r \ n”。我怎样才能检查这一点,因为只是String.Equals("\r\n");不起作用。要从 RichTextbox 中获取文本,我有这个方法:

 private string ConvertRichTextBoxContentsToString(RichTextBox rtb)
  {
        TextRange textRange = new TextRange(rtb.Document.ContentStart,
        rtb.Document.ContentEnd);
        return textRange.Text;
  }

有人对此有所了解吗?

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

试试这个:

foreach

您还可以使用 if(String.IsNullOrWhiteSpace(text)) { // Text found } else { // No text }

删除whitspace和换行符

答案 2 :(得分:0)

string.IsNullOrWhiteSpace实际应该有效。试试这个:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        string s = ConvertRichTextBoxContentsToString(rtb);
        if (string.IsNullOrWhiteSpace(s))
        {
            MessageBox.Show("empty!");
        }
    }
}
<RichTextBox x:Name="rtb" />

这也有效:

string s = ConvertRichTextBoxContentsToString(rtb);
if(s == "\r\n")
{
    MessageBox.Show("empty!");
}

并且相等:

string s = ConvertRichTextBoxContentsToString(rtb);
if (s.Equals("\r\n"))
{
    MessageBox.Show("empty!");
}

如果您没有看到MessageBox,则RichTextBox不是真正的空。你可能想读这个:

Detect if a RichTextBox is empty

如果输入并删除了内容,则开始和结束指针之间的差异为4.您可以尝试使用上面的以下方法来确定RichTextBox是否为空:

public bool IsRichTextBoxEmpty(RichTextBox rtb)
{
    if (rtb.Document.Blocks.Count == 0) return true;
    TextPointer startPointer = rtb.Document.ContentStart.GetNextInsertionPosition(LogicalDirection.Forward);
    TextPointer endPointer = rtb.Document.ContentEnd.GetNextInsertionPosition(LogicalDirection.Backward);
    return startPointer.CompareTo(endPointer) == 0;
}