2009-12-10 5 views
0

사용자 상호 작용없이 텍스트 상자의 텍스트를 업데이트 할 수있는 양식을 만들려고합니다. 지금은 TextBox.Text 필드를 업데이트하는 폼의 클래스에서 메서드를 만들려고합니다. 클래스 외부에서는 함수에 액세스 할 수 없습니다.양식의 텍스트 상자를 별도의 클래스에서 수정하려면 어떻게합니까?

지금 나는 또한 텍스트 상자이 같은 공공 재산을 시도

public partial class Window : Form 
{ 
    public Window() 
    { 
     InitializeComponent(); 
    } 

    public void UpdateTextBox(string text) 
    { 
     textBox1.Text = text; 
    } 
} 

내 폼 클래스 (디자이너에서)처럼 보인다

static void Main() 
{ 
    Form status = new Window(); 
    Application.Run(status); 
    status.UpdateTextBox("NewText"); 
} 

하려합니다.

public string DisplayedText 
{ 
    get 
    { 
     return textbox1.Text; 
    } 
    set 
    { 
     textbox1.Text = value; 
    } 
} 

런타임 중에 필드를 편집하려고합니다. 이것이 가능한가?

+1

btw - 들여 쓰기 코드를 4 자리 공백으로 수정하여 올바른 형식으로 만듭니다. –

답변

1

당신은 기능에 액세스,하지만 당신이 코드를 보면, 문제가있을 수 있습니다 : 당신이 Application.Run()를 호출 할 때,이 상태가 될 때까지 프로그램에 제어를 반환하지 않습니다

static void Main() 
{ 
    Form status = new Window(); 
    Application.Run(status); // Blocks here! 
    status.UpdateTextBox("NewText"); 
} 

양식이 닫혔습니다. 그 시점에서, 상태를 설정하면 ... 너무 늦게 당신이 실행하기 전에 당신은 그것을 설정할 수 있습니다

,하지만 당신은 구축 한 후 :

static void Main() 
{ 
    Form status = new Window(); 
    status.UpdateTextBox("NewText"); 
    Application.Run(status); 
} 
+0

글쎄, 당신도 다른 일을해야 할거야, 일반적으로, 당신은 귀하의 양식이나 그 비슷한 타이머에서 이것을 할거야. –

+0

한 가지 문제는 UpdateTextBox가 내 인텔리 센스에 나타나서 해당 함수를 호출하지 못하는 것입니다. 왜 그런 일이 일어나는 지 아십니까? – Ian

+0

@Ian : Intellisense는 Form 멤버를 표시하지만 UpdatTextBox는 Window 클래스에 정의됩니다. Intellisense는 양식 선언을 다음과 같이 변경하면 찾고있는 것을 보여줍니다. Window status = new Window(); –

0

그것은 ...을 Application.Run이 코드의 뜻 status.UpdateTextBox는 폼을 닫을 때까지 실행되지 않습니다.

static void Main() 
{ 
    Form status = new Window(); 
    Application.Run(status); 
    status.UpdateTextBox("NewText"); 
} 
관련 문제