0

次のコードを使用すると異なる結果が得られる理由を誰かが説明できるかどうか疑問に思っていました。さらに説明すると、C# で作成された dll を使用しています。これは rcon フレームワークです。リッチテキスト ボックスに 3 行が表示され、その後表示されなくなりますが、デバッグ コンソールは rcon 接続からデータを取得し続けます。

私は使用しています:

Private Shared Sub HandleMessage(args As BattlEyeMessageEventArgs)
    Debug.WriteLine(args.Message)
    Form1.RichTextBox3.AppendText(args.Message & vbNewLine)
    Form1.RichTextBox3.SelectionStart = Form1.RichTextBox3.TextLength
    If args.Message = "Connected!" Then
        Form1.Button3.Enabled = True
    End If
End Sub

参考になる場合は、EventHandler の C# コードを次に示します。

using System;

namespace BattleNET
{
    public delegate void BattlEyeMessageEventHandler(BattlEyeMessageEventArgs args);

    public class BattlEyeMessageEventArgs : EventArgs
{
    public BattlEyeMessageEventArgs(string message)
    {
        Message = message;
    }

    public string Message { get; private set; }
    }
}
4

1 に答える 1

0
private delegate void UpdateRichTextBox3Delegate(RichTextBox3 textBox, string text);
private void UpdateRichTextBox3(RichTextBox3 textBox, string text){
    if(textBox.InvokeRequired){
        textBox.Invoke(new UpdateRichTextBox3Delegate(UpdateRichTextBox3),new object[]{textBox, text});
        return;
    }
    textBox.AppendText(String.format("{0}{1}", text,Environment.NewLine));
}

RichTextBox3を更新する前に、最初に呼び出す必要がないかどうかを確認してください。

電話UpdateRichTextBox3(Form1.RichTextBox3, "some text to append");

于 2012-08-09T22:04:39.933 に答える