gpt4 book ai didi

c# - 如何获取用户在 RichTextBox 中编写的文本的 TextRange

转载 作者:行者123 更新时间:2023-11-30 17:43:35 24 4
gpt4 key购买 nike

我有 RichTextBox,它类似于“控制台”。在“cmd”中,我显示来自 SSH 连接的数据,我还允许在“cmd”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 发送它。

 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 中的任何文本?

谢谢你的帮助,此致,维克托

编辑:我已将字符串放入 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 <​​strong>|2|"

最佳答案

另一种方法是获取最后的插入位置,然后将其用于文本范围。

public void ReWriteStream()
{
var myText = new TextRange(rtb.CaretPosition.GetLineStartPosition(0), rtb.CaretPosition.GetLineStartPosition(1) ?? rtb.CaretPosition.DocumentEnd).Text;
...

}

关于c# - 如何获取用户在 RichTextBox 中编写的文本的 TextRange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30709034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com