我不想检查 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;
}
有人对此有所了解吗?
答案 0 :(得分:0)
\ r \ n是CRLF新行字符
你试过.IsEmpty属性吗? https://msdn.microsoft.com/en-us/library/system.windows.documents.textrange.isempty(v=vs.110).aspx答案 1 :(得分:0)
试试这个:
foreach
您还可以使用 if(String.IsNullOrWhiteSpace(text))
{
// Text found
}
else
{
// No text
}
答案 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;
}