2009-12-10 64 views
0

我想創建一個表單,我可以更新文本框中的文本,而無需用戶進行交互。現在我試圖在我的窗體類中創建一個更新TextBox.Text字段的方法。在班級之外,我無法訪問該功能。如何從單獨的類中修改表單的文本框?

現在我想

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

我的表單類是什麼樣子(從設計師)

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

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

我也試圖使文本框一個公共屬性是這樣的。

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

我想在運行時編輯字段。這可能嗎?

+1

btw - 用4個空格縮進代碼以獲得正確的格式。 – 2009-12-10 00:52:58

回答

1

您可以訪問的功能,但如果你看一下代碼,還有一個問題:

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

當你調用Application.Run(),它不會給你的程序返回控制,直到狀態表格已關閉。在這一點上,設置狀態爲時已晚......

您可以設置它之前運行,但你已經構造之後:

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

那麼,你也需要運行其他的東西......通常,你會在你的表單中使用計時器,或者類似的東西。 – 2009-12-10 01:07:02

+0

一個問題是UpdateTextBox沒有出現在我的intellisense中,甚至沒有調用該函數。任何想法爲什麼會發生? – Ian 2009-12-10 01:21:00

+0

@Ian:Intellisense顯示窗體成員,但是您的UpdatTextBox在Window類中定義。如果您將表單聲明更改爲: 窗口狀態=新窗口();智能感知將顯示您要查找的內容。 – 2009-12-10 02:24:34

0

這是該代碼...的Application.Run會塊,status.UpdateTextBox不會執行,直到您關閉窗體。

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