【问题标题】:C# WPF RichTextboxf check if there is any TextC# WPF RichTextboxf 检查是否有任何文本
【发布时间】:2021-06-20 00:45:27
【问题描述】:

我不想检查 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;
  }

有人对此有想法吗?

【问题讨论】:

  • 如果您尝试与 Environment.NewLine:msdn.microsoft.com/en-us/library/… 进行比较会怎样?
  • " " 对你来说也是空字符串吗?
  • 如果你不关心其他类型的空白,你可以检查String.IsNullOrWhiteSpace
  • @Only3lue textRange.Text.Trim().Length==0 将验证没有文本,因为Trim() 删除了所有前导和尾随出现,\r\n 作为 CRLF 换行符也将被删除。

标签: c# wpf


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    【讨论】:

    • 我尝试了您的解决方案,但它不起作用,因为我可以看到 .Text 或字符串本身是“/r/n”。但我不明白为什么它不适用于 Equals。
    【解决方案3】:

    试试这个:

     if(String.IsNullOrWhiteSpace(text))
     {
        // Text found
     }
     else
     {
         // No text
     }
    

    您还可以使用 text.Trim() 删除空格和换行

    【讨论】:

    • 我尝试了您的解决方案,但它们都不起作用,因为我可以看到 .Text 或字符串本身是“/r/n”。但我不明白为什么它不适用于 Equals。
    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 2015-07-10
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多