2016-04-08 1 views
0

В принципе, я хочу сделать постоянный считыватель ввода в моей форме, который ждет ввода и только после завершения ввода (эти входы поступают из внешнего источника, в частности - ручной сканер) она должна быть прочитана, этот код работает точно так же, как я хочу, потому что сканер в конце ввода-то сообщает, что это конец потока/линии (на самом деле не знаю, как будто):Ожидание ввода в конец и только чтение текстового поля

while (true) 
{ 
    string someString = Console.ReadLine(); 
    doSomethingWithString(someString); 
} 

, но я не знаю, как его перенести в приложение формы.

Любая помощь будет оценена по достоинству.

+0

Сканеры (я верю), как правило, отправить возврат каретки (или аналогичный) после каждого сканирования. Вы хотите подождать, пока вы не получите все сканы и * только тогда * сделаете что-нибудь с информацией? – levelonehuman

+0

Является ли приложение формы в другом проекте в решении? потому что, насколько я знаю, у вас не может быть двух из них в одном проекте. –

+0

Используйте System.IO.Stream вместо Console.ReadLine, если вы хотите портировать это в приложение Forms. Вам нужно будет выяснить, как сканеры завершают ввод и записывают класс для управления связью с ними. –

ответ

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() или отображать сканирование для пользователя или изменять по мере необходимости для выполнения любой задачи.

EDIT:

Видимо, я не понял; если вы хотите портировать текущий код в формы, вы можете использовать System.IO.Stream (как указано в комментариях). Кроме того, вам необходимо будет определить , как сканер завершает запись. Это может быть с обратным символом \n, \r и т. Д. Или каким-либо другим способом и, вероятно, изменениями в разных моделях сканера.

EDIT 2 - Дополнительная информация из комментариев:

Для того, чтобы прочитать входные данные от сканера, вы должны определить, какой характер она проходит, чтобы завершить ввод. Из моего ограниченного опыта это должно быть carriage return, line feed, enter или что-то подобное.

После того, как это было определено, оно должно быть просто реализовать метод, который действует на присутствие этого персонажа, что позволяет обрабатывать каждую развертку, как они приходят в.

+0

Я не думаю, что это то, что подразумевалось под «постоянным считывателем ввода». Я бы предположил, что форма открыта, а также постоянно контролирует поток ввода в консоль и что-то делает с входом в форму каждый раз, когда что-то приходит. Но я мог ошибаться, возможно, OP мог пролить свет на это. –

+0

@FrankJ yea, я думаю, я не совсем понял цель вопроса - трудно предоставить дополнительный вклад в то, что в настоящее время доступно; В худшем случае, я удалю ответ, если он слишком далеко от базы. – levelonehuman

+0

, к сожалению, нет, я действительно хочу, чтобы форма (или элемент в ней) дождалась полного ввода (означает, что конец входного потока сканера заканчивается), а затем с помощью ввода (который является одним сканированием) что-то делает с ним. И продолжать делать это, пока я не скажу об этом иначе. –

Смежные вопросы