2012-07-11 105 views
-1

我添加了開始時不可見的標籤,但是當我單擊構建按鈕時,我將標籤設置爲「正在加載...」,並且當完成該過程時,我將「完成」我編譯的代碼唯一的東西是標籤「label2」。 爲什麼它不想得到我放的文字?完成狀態窗體C#

public partial class MDGSelectiveForm : Form 
{ 
    EA.Repository modelRepository; 
    private NeatDiagram.CoreDiagram.MDGForm diagramBuilder; 



    public MDGSelectiveForm(EA.Repository repository) 
    { 
     InitializeComponent(); 
     **this.label2 = new Label(); 
     this.label2.Visible = false;** 
     this.modelRepository = repository; 
    } 


    private void button1_Click(object sender, EventArgs e) 
    { 
     **label2.Text = "Loading..."; 
     label2.Visible = true; 
     label2.Refresh();** 

     //Creo un'istanza di MDGBuilder 
     diagramBuilder = new CoreDiagram.MDGForm(); 

     String typeOfDiagram1 = ""; 
     String typeOfDiagram2 = ""; 
     String typeOfDiagram3 = ""; 

     if (checkBox1.Checked) 
      { 
      typeOfDiagram1 = checkBox1.Text; 
      diagramBuilder.createDiagram(typeOfDiagram1, modelRepository);  
      } 

     if (checkBox2.Checked) 
      { 
      typeOfDiagram2 = checkBox2.Text; 
      diagramBuilder.createDiagram(typeOfDiagram2, modelRepository); 
      } 

     if (checkBox3.Checked) 
      { 
      typeOfDiagram3 = checkBox3.Text; 
      diagramBuilder.createDiagram(typeOfDiagram3, modelRepository); 
      } 

     **label2.Text = "Complete";** 

     **label2.Refresh();** 


    } 
+0

我們不會爲您編寫代碼。 – JohnD 2012-07-11 17:17:03

+1

你想知道如何在表單中放置文本,或者如何找出流程完成的時間或其他內容? – 2012-07-11 17:17:42

+0

@MrLister如何在表單中放置文本,如果你能幫助我,謝謝。 – Defi 2012-07-11 17:20:42

回答

3

如果你想顯示狀態,你可以使用一個StatusStrip,或者你可以用你想要的文字添加標籤,其可見性設置爲false,然後將其設置爲true,當你需要顯示的消息。

編輯: 要到你的跟進迴應的問題,因爲這不適合在評論 -

試着將標籤後拋出Application.DoEvents()。這可能會解決它。請注意,這不是處理這種情況的最佳方式。如果因爲CreateDiagram是一個長時間運行的操作而添加此操作,則不應從您的按鈕OnClick處理程序調用CreateDiagram。任何長時間運行的操作都應該在自己的線程中完成。您可以使用BackGroundWorkerTask或任何您選擇的線程來執行操作。在線程中,您可以調用UI以更新標籤。更新後在標籤上調用Invalidate。

+0

我重新編輯了這個問題,你能幫我嗎?萬分感謝! – Defi 2012-07-12 12:53:44

+0

我在代碼中看不到標籤,您在哪裏設置它。如果您在點擊處理程序中多次更改標籤,則需要在設置「Text」屬性後在標籤上調用「Refresh」。你可以嘗試'_myLabel.Invalidate()',但我相當確定你將需要執行'_myLabel.Refresh()'。 – pstrjds 2012-07-12 13:00:27

+0

我試過了,它也不起作用...我不明白爲什麼。我認爲這很簡單。 – Defi 2012-07-12 13:13:21