我正在使用Visual Studio 2008,并且似乎没有CaretPosition函数进入richtextbox propreties。 如何在插入位置获得整行? 例如,我写了这个:
show databases;
show tables;/* (the caret (|) is flashing just here so after pressing a button i want to display "show tables"*/
show functions;
我该怎么办? 提前谢谢。
答案 0 :(得分:2)
如果您使用 WPF :
TextPointer caretPos = rtb.CaretPosition;
TextPointer start=caretPos.GetLineStartPosition(0);
TextPointer end = (caretPos.GetLineStartPosition(1) != null ? caretPos.GetLineStartPosition(1) : caretPos.DocumentEnd);
TextRange tr = new TextRange(start, end);
MessageBox.Show(tr.Text);
GetLineStartPosition(0)
返回一个TextPointer
对象,其位置为当前行的开头。
GetLineStartPosition(1)
返回一个TextPointer
对象,其位置为下一行的开头。
如果插入符号放在最后一行,caretPos.GetLineStartPosition(1)
将返回null。您可以使用caretPos.DocumentEnd
修复此问题。
如果您使用 WinForms :
string[] lines = rtb.Lines;
MessageBox.Show(lines[rtb.GetLineFromCharIndex(rtb.SelectionStart)]);
rtb.GetLineFromCharIndex(rtb.SelectionStart)
方法返回插入符号的行号。
答案 1 :(得分:0)
从.NET Framework 3.0版开始,大多数情况下是一个RichTextBox.CaretPosition属性。