我有RichTextBox就像「控制檯」。在'cmd'中,我顯示來自SSH連接的數據,並且還允許在'cmd'RichTextBox中寫入內容。如何獲取用戶在RichTextBox中編寫的文本的文本範圍
public void ConnectTTY()
{
NewTerminal = new TTY(HostBox.Text, "", LoginBox.Text, PasswordBox.Text);
Thread.Sleep(1000);
ReadStreamAsync(NewTerminal.reader, cmd);
// cmd is my RichTextBox . At first I am filling it with data from server
// and in next step I am allowing user to write some command
cmd.Focus();
cmd.CaretPosition = cmd.Document.ContentEnd;
cmd.ScrollToEnd();
LastChar = cmd.Document.ContentEnd ;
}
在最後一個行我使用TextPointer「LastChar」拿到最後添加內容的位置,因爲我想獲得什麼樣的用戶會在RichTextBox中寫。
在使用ReWriteStream獲取最後文本並通過SSH發送的「Enter」事件I上。
public void ReWriteStream()
{
string myText = new TextRange(LastChar, cmd.Document.ContentEnd).Text ;
MessageBox.Show("Tekst: " + myText.ToString() );
if (myText.Length != 0)
{
WriteStreamAsync(myText, NewTerminal.writer, NewTerminal.stream);
ReadStreamAsync(NewTerminal.reader, cmd);
//WriteStream(myText, NewTerminal.writer, NewTerminal.stream);
//Thread.Sleep(1000);
//ReadStream(NewTerminal.reader, cmd);
}
cmd.Focus();
}
但是每次我的變量myText都是空的。
string myText = new TextRange(LastChar, cmd.Document.ContentEnd).Text ;
我應該如何獲得任何文本,在LastChar位置後寫入我的RichTextBox中?
感謝您的幫助, 最好的問候, Wiktor的
編輯:我已經把串入RichTextBox的分析插入符的位置:
public void ConnectTTY()
{
NewTerminal = new TTY(HostBox.Text, "", LoginBox.Text, PasswordBox.Text);
Thread.Sleep(1000);
ReadStreamAsync(NewTerminal.reader, cmd);
cmd.Focus();
cmd.CaretPosition = cmd.Document.ContentEnd;
cmd.ScrollToEnd();
cmd.CaretPosition.InsertTextInRun("|1|");
// LastChar = cmd.CaretPosition.DocumentEnd;
}
這裏:
public void ReWriteStream()
{
string caret;
string myText;
LastChar = cmd.CaretPosition.DocumentEnd.GetInsertionPosition(LogicalDirection.Backward);
cmd.CaretPosition.InsertTextInRun("|2|");
myText = new TextRange(LastChar, cmd.CaretPosition.DocumentEnd).Text;
// myText = new TextRange(LastChar, cmd.Document.ContentEnd).Text;
MessageBox.Show("Text : " + myText.ToString() );
if (myText.Length != 0)
{
WriteStreamAsync(myText, NewTerminal.writer, NewTerminal.stream);
ReadStreamAsync(NewTerminal.reader, cmd);
//WriteStream(myText, NewTerminal.writer, NewTerminal.stream);
//Thread.Sleep(1000);
//ReadStream(NewTerminal.reader, cmd);
}
cmd.Focus();
}
我得到它應該在cmd RichTextBox: 「 你有郵件。 -bash-3.2 $ | 1 | ls -l | 2 | 「
什麼類型的對象是LastChar?的TextPointer?或者? –
是的,這是TextPointer。 – Wiktor
它是TextPointer,我只在ConnectTTY()中修改以獲取ContentEnd最後一個「自動」插入文本的位置到RichTextBox中。 – Wiktor