如何从文本框中获取特定文本并传输到另一个文本框?
Posted
技术标签:
【中文标题】如何从文本框中获取特定文本并传输到另一个文本框?【英文标题】:How to get a specific text from a textbox and transfer to another textbox? 【发布时间】:2021-07-07 08:32:24 【问题描述】:我正在尝试从一个文本框中获取特定文本并将其放入另一个文本框中。搜索了一段时间,我只能从那个文本框中得到整个文本。
【问题讨论】:
您使用的是TextBox
还是RichTextBox
?
从 RichTextBox 到 TextBox。
如果我理解正确,您将把文本片段从RichTextBox
复制到TextBox
。 RichTextBox
中的文本片段如何由光标指定?通过选择?
哦,对不起,它都是TextBox,TextBox1到TextBox2。顺便说一句,TextBox1 中的数据来自 SerialPort1。
您必须从TextBox
解析文本以获取所需信息。
【参考方案1】:
如果您将数据(模型)与显示日期的方式(视图)分开,则应该是正确的现代设计。
如果分开,将很容易重用此模型并以不同方式查看它:在表格中?还是文本文件?单元测试会更容易,因为你的模型独立于winforms,而且通常代码更小,所以更容易阅读和更改。
所以您的模型有两个项目:一个完整的输入文本和一个温度。我们还不知道温度是什么类型:一个字符串,或者一个数字?是摄氏度还是开尔文?因为我们将模型与视图分开,所以我们不需要知道这一点。
所以首先你需要一些东西来阅读你的输入文本。
string GetInputText()
return this.textBoxInput.Text;
目前我们知道此输入文本来自文本框,但同样:在程序之外,我们不想知道您从哪里获取输入文本。如果在将来的版本中您决定从 Internet 获取此文本,则程序的其余部分不必更改。
其次,我们需要一个程序来从您的输入文本中提取温度的字符串表示:
string ExtractTemperatureText(string inputText)
....
你怎么知道温度在哪里?它是否总是从 inputText 的第 76 个字符开始?或者也许是第 15 行 TBody =
之后的文本?由于您没有指定,我无法编写代码。再说一遍:好消息是,如果您决定更改输入文本的格式,只需更改此过程即可。
好的,所以我们能够获取输入文本(来自任何来源),并将温度提取为文本(无论输入文本具有何种格式)。
decimal ParseTemperature(string temperatureText)
return decimal.Parse(temparutureText);
如果稍后您决定“C”是温度文本的一部分,并且您还将支持“F”和“K”,则仅在此过程中进行更改。
最后是显示温度的方法:
void DisplayTemperature(decimal temperature)
// What format?
this.textBoxTemperature.Text = temperature.ToString("f3");
再次重申:如果您以后决定支持 F 和 K,这是唯一必须更改的方法
void ProcessInputTemperature();
DisplayTemperature(ParseTemperature(ExtractTemperatureText(GetInputText())));
把它们放在一起:
void OnButtonOk_Clicked(object sender, ...)
this.ProcessInputTemperature();
看,我什至将您的输入按钮与模型分开:如果您希望通过单击、加载表单或其他方式获得它:只需更改一个位置。
此外:所有其他方法都可以进行单元测试,无需表单。
【讨论】:
以上是关于如何从文本框中获取特定文本并传输到另一个文本框?的主要内容,如果未能解决你的问题,请参考以下文章