はじめまして
VB2005でUDPのメッセージを受信してForm上のLabelに受信内容を表示させるサンプルプログラムを作成したのですが、「デバック開始」をクリックしてもFormのウィンドウ自体が表示されません。
イミディエイトにdebug.printで受信データは表示されていますのでプログラム自体は正常に動作しているようです。
どなたかアドバイスをいただけませんでしょうか。
Public Class Form1
Dim localport As Integer = 1111
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'文字コードを指定する
Dim enc As System.Text.Encoding = System.Text.Encoding.UTF8
' バインド
Dim udp As New System.Net.Sockets.UdpClient(localport)
' 受信
Dim remoteEP As System.Net.IPEndPoint = Nothing
Debug.Print("受信開始")
Do
My.Application.DoEvents()
Dim rcvBytes As Byte() = udp.Receive(remoteEP)
Dim rcvMsg As String = enc.GetString(rcvBytes)
My.Application.DoEvents()
Debug.Print("受信メッセージ:" & rcvMsg)
Label1.Text = rcvMsg
Loop
End Sub
End Class
No.1ベストアンサー
- 回答日時:
Formが表示されるのは Loadイベントを抜けた後になります
Loadイベント中に Do ... Loop で無限ループを作っているので
.NET Frameworkがフォームを表示することはありません
フォームを表示するのであればループに入る前に Me.Show() などを実行しましょう
本来なら ボタンなどを準備してそのクリックイベントなどを使うようにしたほうがいいと思います
redfox63様
早々のご回答ありがとうございます。
なるほど、そういうことですか....お恥ずかしい
ということは、以下のような方法が考えられますでしょうか。
・フォームのロードでやるならば、ループの前にme.show()を実行する
・ボタンなどをつけて、ボタンクリック後にループで受信する
どちらも、これから確認してみます。
ありがとうございました。
No.2
- 回答日時:
既に答えは出ているようですが、補足を。
VB2005なら、FormのShownイベントで実際に表示する処理を書くって手も
使えますよ。
ちなみに.NETでも、2003までのバージョンにはShownイベントは無いようです。
K-Sogacchi様
ありがとうございます。
現在のところTimerコントロールで200msにイベントを発生させ、
受信データの有無をチェックするようにいたしました。
以下、ソースの抜粋です。
Public Class Form1
Dim listenport As Integer = 1111
Dim listner As New Sockets.UdpClient(listenport)
Dim EP As New IPEndPoint(IPAddress.Any, listenport)
Dim bytes As Byte()
Dim rcvmsg As String
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If listner.Available > 0 Then
' UDP受信データあり
bytes = listner.Receive(EP)
rcvmsg = Encoding.ASCII.GetString(bytes, 0, bytes.Length)
Debug.Print("受信メッセージ:" & rcvmsg)
:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【ExcelVBA】値を変更しながら...
-
VBAで大量のファイルをシート名...
-
VBA 何かしら文字が入っていたら
-
【マクロ】1つのマクロの中に...
-
VBA 別ブックからコピペしたい...
-
VBAを使用した時間管理
-
Excelのマクロでワードのテキス...
-
【PowerPoint VBA】緑色の文字...
-
ExcelのVBAコードについて教え...
-
2つのマクロでチェックボックス...
-
VB.net(VB)で、フォームにExcel...
-
FileCopy時のエラー
-
VBA ユーザーフォーム ボタンク...
-
エクセルについて
-
Vba SelStart、SelLen教えてく...
-
VBAで各列の"+"と"o"の合計数を...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
Excel VBA 定義されたプロージ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Outlookの「受信日時」「件名」...
-
TCP/IP のパケットの分断と結合...
-
Outlookの「受信日時」「送信者...
-
CRC-CCITTに関しての仕様とサン...
-
シリアル通信時のデータ受信方法
-
Excxel vba でYahoo API で住所...
-
UDP受信時の通信異常検知について
-
recv関数の戻り値について
-
ASP.NET C#でPOST受信
-
RS232cを用いた送信プログラム
-
VC++メッセージの送受信につい...
-
PC98で232c送信winndowで受信で...
-
TCPのプログラミングで質問…と...
-
VBのMSCommコントロールを使っ...
-
「TCPは全二重可能」の意味
-
DHCPOFFERの受信について
-
VB2010で、シリアル通信の方法...
-
msgrcv( )で領域破壊?
-
シリアル通信
-
ネットワークでの受信バイト数
おすすめ情報