2013-01-18 2 views
1

서버/클라이언트 통신을 실행 중입니다. 는 지금은 서버 textBox에 뭔가를 쓰고 싶어하고 클라이언트 textBox 그래서 정적 메서드 사용하여 걸리는 서버에서 클라이언트로 메시지를 전송하고 그것을 보여정적 메서드에서 textBox.Text 변경

static void Client_MessageReceived(object sender, MessageEventArgs e) 
    { 
     //Client only accepts text messages 
     var message = e.Message as ScsTextMessage; 
     if (message == null) 
     { 
      return; 
     } 
    } 

지금 난 그냥 원하는을 이 정적 메소드에서 클라이언트 textBox에 메시지를 추가하십시오. 나는 내가 어떤 종류의 invoke을 필요로 할 것이지만 나는 그것을하는 법을 모른다. 그리고 나는 Google에 유용한 것을 찾을 수 없다.

+2

음 * * 텍스트 상자 변경 하시겠습니까받은 방법은? 당신은 정적 인 방법이므로 상황이 없습니다. –

+0

좋아요, 나는 클라이언트 응용 프로그램이 있고 그것은 자신의 tbox TextBox가 Client라는 폼에 있습니다. 그래서 나는 tbox 텍스트를 변경하고 싶다. –

+0

그러나 논리적으로 볼 때, 메서드의 관점에서 볼 때 여러 형식이있을 수도 있고 그렇지 않을 수도 있습니다. 왜 이것이 정적 방법입니까? (양식에 있나요? 당신이 우리에게 말하지 않은 많은 것이 있습니다.) –

답변

1

호출 방법

public void AppendText(string what, bool debug = false) 
    { 
     if (debug) 
      return; 
     if (this.InvokeRequired) 
     { 
      this.Invoke(
       new MethodInvoker(
       delegate() { AppendText(what); })); 
     } 
     else 
     { 
      DateTime timestamp = DateTime.Now; 
      tbox.AppendText(timestamp.ToLongTimeString() + "\t" + what + Environment.NewLine); 
     } 
    } 

메시지

private void Client_MessageReceived(object sender, MessageEventArgs e) 
     { 
      //Client only accepts text messages 
      var message = e.Message as ScsTextMessage; 
      if (message == null) 
      { 
       return; 
      } 
      AppendText(message.Text, false); 

      //Console.WriteLine("Server sent a message: " + message.Text); 
     } 
0
// Program.cs 

public static ProgramForm Form; 

publi static void Main() 
{ 
    // ... 
    Application.Run(Form = new ProgramForm()); 
    // ... 
} 

public static void ChangeText(String message) 
{ 
    Form.TextBox1.Text = message; 
} 

// ProgramForm.cs 

private void Client_MessageReceived(object sender, MessageEventArgs e) 
{ 
    if (e.Message != null) 
     Program.ChangeText(e.Message); 
} 
관련 문제