2012-01-12 187 views
0

我有(應該是)一個非常簡單的Windows窗體應用程序。有一個「Main」表單,它是一個帶有Submit按鈕的數據輸入。當用戶按提交時,我想顯示第二個表單,它是一個非常基本的表單,只有一個標籤,上面寫着「Please wait ...」。我創建了第二個形式,並在提交按鈕的Click()我這樣做:標籤控件不能正確呈現

Form2 f2 = new Form2(); 
f2.Show(); 
System.Threading.Thread.Sleep(3000); 
f2.Hide(); 

窗體2的構造函數:

public Form2() 
{ 
    InitializeComponent(); 
    this.Text = "Form2 that is useless"; 
} 

我看到的是窗體2,但在標籤應該是,我只能將它的輪廓看作一個沒有文字的白色矩形。文本前景和背景顏色檢查(「控制」彩色背景上的黑色前景

我拉我的頭髮在這裏試圖確定爲什麼沒有屬性更改添加一個簡單的表單不會正常顯示控件我添加了一個按鈕。控件和圖片框控件,並得到了相同的結果控制的輪廓顯示出來,但內容不

幫助

回答

2

地址:?

Shown += new EventHandler(Form2_Shown); 

到窗體2的構造函數和:

void Form2_Shown(object sender, EventArgs e) 
{ 
    Update(); 
} 

在同級車。

編輯: 這不起作用。可能是因爲SleepShown事件處理程序之前執行。解決的辦法是增加一個:

f2.Update(); 

Sleep之前,以前的解決方案,而不是

這一次,我嘗試過。有用。

+0

我了這樣的窗體2類,但最終的結果是一樣的:\t公共部分類窗體2:晶型 \t { \t \t公共窗體2() \t \t { \t \t \t的InitializeComponent() ; \t \t \t這一點。Text =「Form2是無用的」; \t \t \t顯示+ = new EventHandler(Form2_Shown); \t \t} \t \t空隙Form2_Shown(對象發件人,EventArgs的) \t \t { \t \t \t this.Update(); \t \t} – joebalt 2012-01-12 19:07:58

+1

@JoeBaltimore _在我的回答中,只需在'Sleep'之前加上:'f2.Update();'。 (我試過了,它的工作原理。) – ispiro 2012-01-12 19:30:31

+0

謝謝!它做到了! – joebalt 2012-01-12 19:51:51

2

你不給Form2的機會來表現自己。

嘗試使用第二種形式(而不是說Sleep()方法你有)的3000毫秒後,將關閉它在一個定時器。在Shown事件中啓動它。在Tick事件中關閉表單。

public Form2() { 
    InitializeComponent(); 
    this.Text = "Form2 that is useless"; 
    timer1.Interval = 3000; 
} 

private void Form2_Shown(object sender, EventArgs e) { 
    timer1.Start(); 
} 

private void timer1_Tick(object sender, EventArgs e) { 
    this.Close(); 
} 
+0

我當然做錯了,但這個解決方案並沒有產生預期的結果。 – joebalt 2012-01-12 23:05:50

+1

@JoeBaltimore我在Form2上放置了一個計時器,連接了Shown和Tick事件,並且在顯示它之後3秒關閉了窗體。你得到了什麼結果? – LarsTech 2012-01-12 23:12:19