C# 等待输入结束,然后读取文本框

C# 等待输入结束,然后读取文本框,c#,winforms,input,C#,Winforms,Input,基本上,我想在我的表单中创建一个常量输入读取器,它等待输入,并且只有在输入完成后(这些输入来自外部源,特别是手持式扫描仪)才应该读取,这段代码正是我想要的工作方式,因为输入结束时的扫描仪以某种方式通知它是流/线的结束(但不确定是怎么回事): 但我不知道如何将它干净地转移到表单应用程序中 任何帮助都将不胜感激。假设我理解正确,您希望这样做: public void SendScansToForm(string[] scans) //pass in an array (or list, or etc

基本上,我想在我的表单中创建一个常量输入读取器,它等待输入,并且只有在输入完成后(这些输入来自外部源,特别是手持式扫描仪)才应该读取,这段代码正是我想要的工作方式,因为输入结束时的扫描仪以某种方式通知它是流/线的结束(但不确定是怎么回事):

但我不知道如何将它干净地转移到表单应用程序中


任何帮助都将不胜感激。

假设我理解正确,您希望这样做:

public void SendScansToForm(string[] scans) //pass in an array (or list, or etc.) of the scanned items
{
    MyForm form = new MyForm(); //Create a new instance of the form
    form.variableToHoldScans = scans; //variable (on the form instance) to pass the scan to
}
通过这种方式,您可以读入所有扫描,然后将它们传递到表单的新实例中。大概可以使用
form.Open()
,或者将扫描显示给用户,或者根据需要进行更改以执行所需的任何任务

编辑:

显然我不明白;如果您想将当前代码移植到表单,可以使用
System.IO.Stream
(如注释中所述)。此外,您还需要确定扫描仪如何终止条目。这可能是使用返回字符
\n
\r
等,也可能是其他方法,并且可能会随着扫描仪型号的不同而发生变化

编辑2-评论中的其他信息:

为了从扫描仪读取输入,您需要确定它传递的是什么字符以终止输入。根据我有限的经验,这应该是
回车
换行
回车
或类似的内容


一旦确定了这一点,实现一个作用于此字符存在的方法应该很简单,允许您在每次扫描时处理扫描。

假设我理解正确,您希望执行以下操作:

public void SendScansToForm(string[] scans) //pass in an array (or list, or etc.) of the scanned items
{
    MyForm form = new MyForm(); //Create a new instance of the form
    form.variableToHoldScans = scans; //variable (on the form instance) to pass the scan to
}
通过这种方式,您可以读入所有扫描,然后将它们传递到表单的新实例中。大概可以使用
form.Open()
,或者将扫描显示给用户,或者根据需要进行更改以执行所需的任何任务

编辑:

显然我不明白;如果您想将当前代码移植到表单,可以使用
System.IO.Stream
(如注释中所述)。此外,您还需要确定扫描仪如何终止条目。这可能是使用返回字符
\n
\r
等,也可能是其他方法,并且可能会随着扫描仪型号的不同而发生变化

编辑2-评论中的其他信息:

为了从扫描仪读取输入,您需要确定它传递的是什么字符以终止输入。根据我有限的经验,这应该是
回车
换行
回车
或类似的内容



一旦确定了这一点,实现一个作用于此字符存在的方法应该很简单,允许您在每次扫描时处理它们。

扫描仪(我相信)倾向于发送回车(或类似)每次扫描后。是否要等到收到所有扫描后才对信息进行处理?表单应用程序是否位于不同的项目中?因为据我所知,它们不能位于同一个项目中。如果要将其移植到表单应用程序,请使用System.IO.Stream而不是Console.ReadLine。您可以我需要弄清楚扫描器是如何终止输入的,并编写一个类来管理与扫描器的通信。@levelonehuman我想等待一次扫描,然后处理它。@DominikH控制台代码仅供参考,我想和WFA.scanners上的代码一样(我相信)倾向于发送回车(或类似)每次扫描后。是否要等到收到所有扫描后才对信息进行处理?表单应用程序是否位于不同的项目中?因为据我所知,它们不能位于同一个项目中。如果要将其移植到表单应用程序,请使用System.IO.Stream而不是Console.ReadLine。您可以我需要弄清楚扫描器是如何终止输入的,并编写一个类来管理与扫描器的通信。@levelonehuman我想等待一次扫描,然后处理它。@DominikH控制台代码仅供参考,我想做与WFA上的代码相同的事。我不认为这是什么意思恒定输入读取器"。我会假设表单是开放的,并且会持续监视控制台输入流,每次有东西进来时都会对表单中的输入进行处理。但我可能错了,也许OP可以对此有所帮助。@FrankJ yea,我想我没有完全理解问题的意图-很难提供关于发生了什么的额外输入s当前可用;最糟糕的情况是,如果答案太离谱,我会删除它。@Jonasrudzion使用
EnterKeyPressed
事件或类似事件怎么样?正如我提到的,我相信扫描仪会添加一条
新行
(某种类型的)在扫描之后,如果您知道输入终止符是什么,那么您可以仅在出现此终止符时触发事件character@jonasrudzionis不管怎样,在常规输入之后,您需要知道扫描器传递了什么。当我使用扫描器和excel时,扫描总是移动到下面的列(相当于按enter键)。一旦你得到了这些信息,就可以根据这些条件执行代码了。@jonasrudzionis我可以想出两种主要的方法-调试代码并打印出扫描的内容,以测试最后的字符,或者查找扫描仪模型,看看他们有什么信息。下面是一个关于测试“隐藏”字符的不错的答案我不认为这就是“常量输入读取器”的意思。我会假设表单是打开的,并且持续监视控制台输入流,并对表单中的输入进行处理