2016-04-08 12 views
0

基本的には、入力を待つフォームが入力を待つ(入力は外部ソースからのものです。ハンドヘルドスキャナー)を読む必要がある場合、このコードは、入力の最後のスキャナがストリーム/ラインの終わりであることを知らせるので、私が欲しいと思うように正確に動作します:入力が終了するのを待ってからテキストボックスを読み取る

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

しかし、私はきれいにフォームアプリケーションに転送する方法がわかりません。

ご協力いただければ幸いです。

+0

スキャナは(私は信じて)送信する傾向キャリッジリターン(またはそれに類するもの)。あなたがすべてのスキャンを受け取り、その情報だけで何かをやるまで待っていたいのですか? – levelonehuman

+0

フォームアプリケーションは、ソリューション内の別のプロジェクトにありますか?なぜなら私が知っている限り、あなたは同じプロジェクトに2人を持つことはできないからです。 –

+0

これをFormsアプリケーションに移植する場合は、Console.ReadLineの代わりにSystem.IO.Streamを使用します。スキャナが入力をどのように終了するかを把握し、スキャナとの通信を管理するクラスを作成する必要があります。 –

答えて

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など、または他の方法や異なるスキャナモデルで変更される可能性があります。

EDIT 2 - コメントから追加情報:

スキャナからの入力を読み込むためには、あなたは入力を終了するには渡して何文字かを決定する必要があります。私の限られた経験から、これはcarriage returnline feedenterまたはそれに類するものでなければなりません。

これが決定されると、彼らが来るように、各スキャンを処理できるように、この文字の存在に作用する方法を実装するために些細でなければなりません。

+0

私はこれが "定数入力リーダー"の意味ではないと思います。私はフォームが開いていると仮定し、コンソールの入力ストリームを継続的に監視し、何かが入ってくるたびにフォームの入力で何かをします。しかし、私は間違っている可能性があります。 –

+0

@FrankJ yea、私は質問の意図をかなり集めていないと思います。現在利用可能なものについて追加の情報を提供するのは難しいです。最悪の場合、それが離れすぎていると答えを削除します。 – levelonehuman

+0

悲しいことに、いいえ、私は実際にフォーム(またはその要素)が完全な入力(スキャナ入力ストリームが終了するまでの手段)を待ってから、入力(これは1回のスキャン)で何かをします。私がそれ以外のことを言うまで、これを続けてください。 –

関連する問題