投稿者 魔界の仮面弁士  (社会人) 投稿日時 2021/1/13 18:40:08
> AddHandler g_SerialPort.DataReceived, AddressOf DataReceived

ここで使っている g_SerialPort の宣言はどうなっていますか?

もし、最初の回答の冒頭で述べた、
System.IO.Ports 名前空間の SerialPort クラスだとしたら、話が色々変わってきます。

SerialPort の DataReceived イベントに渡されるための Sub DataReceived は、
引数を 2 つもち、かつ、それぞれの引数のデータ型が
 Sub DataReceivedHandler(sender As Object, e As SerialDataReceivedEventArgs)
になっていなければなりません。

引数定義さえ正しければ、この Sub に Shared はあってもなくても良いですし、
スコープも Private でも Public でも構いません。

ただし、SerialPort クラスというものは独立したスレッドで処理されるものであるため、
上記の Sub DataReceivedHandler プロシージャーの中からは
フォームや TextBox への直接アクセスが一切禁止されます。
(最初の質問の冒頭で懸念していたのが、この点です)


一方、最初の質問にあった BarcodeReader クラスの方の Sub DataReceived() であれば、
そうした制限が無いので、この場所で TextBox の値を読み書きしても問題ありません。
Form とは別クラスなので、データの受け渡し方を考える必要はありますけれどね。