したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

「C#、VB2005 でSocket通信」について

1MKG:2009/09/02(水) 17:10:48
VB6で作成したソースを、VB2005のサンプルソースを基にSocket通信を作成しています。
.NETは初めてなのでとてもハードルが高く感じている次第です。
さて、1つご教授頂きたい処理があり投稿しました。
デリゲートにてメインスレッドのテキストボックスに表示している内容を、絶えずカーソル行(最終表示行)
が表示するようにするにはどうしたら良いでしょうか?

ソースを一部抜粋します(と言ってもコピペしているのでそのまんまなんですが)
'//**********************************************************
'//デリゲート宣言
'//**********************************************************
'//別スレッドからメインスレッドのテキストボックスに書き込むデリゲート
Delegate Sub dlgWriteText(ByVal text As String)

'受信文字を書き込むデリゲートを作成
Dim dlgText As dlgWriteText = New dlgWriteText(AddressOf WriteReadText)
    'データ受信
'ログへの出力(Delegate版)
RichTextBox1.Invoke(dlgText, lstDispData)
    この後に、最終行表示の処理を入れたいと考えています。
ご教授の程宜しくお願い致します。

2igoten:2009/09/02(水) 17:34:22
リッチテキストのScrollToCaretメソドを実行する
キャレットがある行までスクロールします。

3igoten:2009/09/02(水) 17:42:30
すみません、何かの不具合で
「NG キーワードを含む為投稿できません」と出て
なぜか投稿できないので分けて書きます。
ScrollToCaret()はのメソドでRichTextBox1.の後に続けて書きます。

4MKG:2009/09/03(木) 11:03:32
単純にScrollToCaretするとエラーで叱られてしまうのです。

5MKG:2009/09/03(木) 11:05:51
エラー内容
System.InvalidOperationException: 有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'RichTextBox1' がアクセスされました。

6MKG:2009/09/03(木) 11:08:39
NGワードが含まれてます。とエラーになるのでうまく説明できなくて済みません

7igoten:2009/09/03(木) 11:21:28
やっぱり警告が出ますか、何か変ですね。

とりあえずエラー回避の為に
ScrollToCaret を STCと書きます。
読み替えてください。

エラー内容に示されたエラーは、受信スレッド(これは別スレッドです)
からメインスレッド(RichTextBoxのあるスレッド)を操作しようと
した為です。

私のサンプルコードはそのため、デリゲートで
下のコードを呼び出しています。
Private Sub WriteReadText(ByVal text As String)
'//受信文字の改行は全て↓に置き換えられる
text = text.Replace(Environment.NewLine, "↓")
Me.textBoxRead.AppendText(text + Environment.NewLine)
End Sub

例えばこれを、
Private Sub WriteReadText(ByVal text As String)
RichTextBox1.AppendText(text)
RichTextBox1.STC()
End Sub
とすればよいのです。

8MKG:2009/09/03(木) 15:39:29
ありがとうございます。
早速試してみます。
迅速なご回答に感謝します。

9MKG:2009/09/03(木) 15:48:32
思い通りの結果が得られました。
本当にありがとうございました。
デリゲートって、とてもデリケートなんですね!?
2週間も悩んだことが嘘のようです。
もっと早く「ソフト工房波田」さんに到着できれば
胃潰瘍にならずにすんだものを・・・・


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板