如果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;
}有谁能想到这个吗?
发布于 2017-01-19 10:59:33
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;
}发布于 2017-01-19 08:03:20
R\n是CRLF新行字符。
你试过.IsEmpty属性了吗?https://msdn.microsoft.com/en-us/library/system.windows.documents.textrange.isempty(v=vs.110).aspx
发布于 2017-01-19 08:03:35
试试这个:
if(String.IsNullOrWhiteSpace(text))
{
// Text found
}
else
{
// No text
}您还可以使用text.Trim()消除空白和新行。
https://stackoverflow.com/questions/41736515
复制相似问题