2011-03-09 127 views
1

我正在使用Visual Studio(C#)一個項目之後的新形式。我想創建一個啓動窗體,當我用進度條安裝我的應用程序。進度條完成後,應該隱藏這個表單,並打開一個新表單。你能幫我解決這個問題嗎?顯示進度條完成百分比C#項目

+0

我們可以看到一些代碼嗎?提供進度欄值是什麼? – 2011-03-09 14:57:27

回答

0

編輯:

我剛剛作出了一個示例應用程序試圖準確地使用您所指定的代碼。它工作得很好,除了只有一個好辦法:

Form1().Show();應該new Form1().Show();

這個代碼不執行的,如果你忘了設置timer1enabled狀態導致代碼永遠不會火起來的設計視圖中的唯一方法。

你確定代碼發射了?你有沒有在這段代碼上做一個突破點?

在一個旁註: TIMER1是不是一個單獨的線程,所以你不需要使用調用(你可以看到,如果你真的需要它通過尋找控制的InvokeRequired財產)

建議改進:,如果你不打算再次使用窗體2,並從你的代碼來看,很可能你不會;也許你應該叫Form2上,而不是Hide()Close()並釋放資源。我曾經有次在我的應用程序在後臺運行,因爲我隱藏了表單,但從未關閉它,並且應用程序處於「最後一個窗口關閉時退出」狀態,這種情況從未發生過。

所以可以肯定,這裏是做我的機器上工作的最終代碼:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form2 : Form 
    { 
     public Form2() 
     { 
      InitializeComponent(); 

      //enable timer1 here or in designer 
      timer1.Enabled = true; 
     } 

     private void timer1_Tick(object sender, EventArgs e) 
     { 
      //disable timer1 first thing, otherwise it can end up ticking 
      //multiple times before you've had a chance to disable it 
      //if the timespan is really short 
      timer1.Enabled = false; 

      int d; 

      for (d = 0; d <= 100; d++) 
       progressBar1.Value = d; 

      Hide(); 

      //create a new Form1 and then show it 
      new Form1().Show(); 
     } 
    } 
} 
+0

我也使用form2上的調用,但它不會隱藏,以顯示窗體1. – vivek 2011-03-12 07:00:51

+0

查看新的代碼。希望它能解決你的問題。對不起,我的迴應有所延誤。 – Maverik 2011-03-16 12:49:24

+0

抱歉,表格2未關閉。 – vivek 2011-03-27 10:53:36

0
  1. 創建窗體並添加您的進度條
  2. 建立在形式應該影響進度條
  3. 更新progree欄,以反映完成
  4. 的工作量的部分事件處理程序
  5. 當表單完成後關閉它
0
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form2 : Form 
    { 
     public Form2() 
     { 
      InitializeComponent(); 
     } 

     private void timer1_Tick(object sender, EventArgs e) 
     { 
      int d; 

      for (d = 0; d <= 100; d++) 
       progressBar1.Value = d; 

      this.Hide(); 
      Form1().Show(); 


      timer1.Enabled = false; 
     } 
    } 
} 
+2

而不是在您的答案中發佈代碼,編輯原始帖子以添加新的/更新的內容。如果有很多反應,但大家需要看到您提供的代碼回答可能會丟失。 – Maverik 2011-03-10 15:11:34