2013-05-19 1 views
0

나는 다음과 같은 코드 조각이 :continuosly C#에서 텍스트 상자를 업데이트하는 방법

ABC ABC : 그것은 다음과 같습니다 있도록

class NotepadCloneNoMenu : Form 
{ 
    protected TextBox txtbox; 

    public NotepadCloneNoMenu(string a) 
    { 

     Text = "Notepad Clone No Menu"; 

     txtbox = new TextBox(); 
     txtbox.Parent = this; 
     txtbox.Dock = DockStyle.Fill; 
     txtbox.BorderStyle = BorderStyle.None; 
     txtbox.Multiline = true; 
     txtbox.ScrollBars = ScrollBars.Both; 
     txtbox.AcceptsTab = true; 
     txtbox.AppendText(a); 
     txtbox.AppendText("\n");   
    } 
} 

class program1 
{ 

    public static void Main() 
    { 

     string result = "abc"; 

     while(true) 
     { 
      Application.Run(new NotepadCloneNoMenu(result)); 
    } 
} 
} 

내가 지속적으로 텍스트 상자에 문자열 결과를 추가 할을 abc

등등. 그러나, 내가 이것을 호출 할 때마다 :

Application.Run(new NotepadCloneNoMenu(result)); 

텍스트 상자가 재설정됩니다. 어쨌든 텍스트 상자를 지속적으로 업데이트 할 수 있습니까? 나는 C#에 상당히 익숙하다. 그래서 이것은 나에게 상당히 혼란 스럽다.

덕분에, 모든 PHUC 팜

+1

WinForm 응용 프로그램을 만드는 방법에 대한 자습서처럼 쉽게 시작하십시오. 이것은 WPF 또는 태그가 주장하는 콘솔 앱입니다. WinForms입니다. 당신의 코드의 verbage를보세요. 같은 루트 형태로 많은 어플리케이션을 실행하려고하는 것처럼 읽지 않겠습니까? 당신이 그렇게해야한다는 것은 아닙니다. –

답변

0

첫째, 당신은 지속적으로 폐쇄하고 응용 프로그램을 열고 있습니다. 그것이 재설정되는 이유입니다. 무한 루프를 실행하려면 응용 프로그램 내부에서 루프를 실행하고 싶을 것입니다.

응용 프로그램 코드에서 텍스트 상자에 텍스트를 추가하는 데 약간의 이벤트 (어쩌면 타이머가 적합 할 수도 있음)를 사용하십시오. 이처럼 :

고려해야 할 두 가지 더있다
public someEventOnTheForm (object sender, EventArgs e) 
{ 
    txtBox.Text += "Notepad Clone to Menu"; 
} 

: 당신은을 stoping 조건이없는 경우 첫째,이 그냥 그것을 밖으로 실행할 때까지 메모리를 채우는 유지합니다가.

둘째, Windows 양식은 기본적으로 하나의 스레드에서만 실행됩니다. 이 스레드를 사용하여 텍스트 상자를 업데이트하므로 텍스트를 추가하는 동안 양식 자체는 사용할 수 없게됩니다. 오래 걸리기 시작하면 이벤트가 진행되는 동안 빈 공간이 생길 수 있습니다. 양식을 사용할 수있게하려면 이벤트를 처리하는 두 번째 스레드가 필요합니다.

+0

답변에 감사드립니다. 이 양식은 내가 사용하고있는 USB 컨트롤러 인 FX3에서 보낸 디버깅 메시지를 기다리고 있습니다. 그것이 정지 조건이없는 이유입니다. 또한 모든 프로그램이 FX3에서 수신하는 메시지를 게시하기 때문에 한 스레드만으로 충분합니까? – user2278277

+0

질문에 해당 정보를 포함해야합니다. 몇 초 후에 디버거로부터 메시지를 받으면 실행 가능할 수 있습니다. 그렇습니다. 그 정보가 너무 빨리 읽지 않는 한. 또한 대신 콘솔 응용 프로그램을 사용합니다. – Renan

+0

나는 이미 콘솔 응용 프로그램을 가지고있다. 그러나 제 그룹은 양식이 좋기 때문에 양식을 사용하기를 원합니다. 어쨌든 내가 새로받은 메시지를 내 TextBox에 계속 추가 할 수 있습니까? – user2278277

관련 문제