2013-08-01 18 views
0

我新的基於.NET的桌面開發,所以請原諒我,如果我錯過了一些次要的事情減少。進度條對話框的主要形式

我有當用戶點擊一個按鈕在其上,一個對話框形式被打開,其中用戶可以選擇一些文件主要形式,選擇文件後,用戶點擊該表單上進程按鈕來啓動一個漫長的過程。 所以我做了什麼是單擊按鈕時,我躲在這種形式,並啓動一個BackgroundWorker也開始顯示另一個對話框,顯示動畫的進度條的圖像。 我面臨的問題是當用戶點擊Process按鈕時,窗體被隱藏並顯示進度條對話框,但主窗體被最小化。任何身體都可以幫助我嗎?我不希望主表單被最小化。

我其中文件被選擇的對話框的代碼如下:

frmProgressbar progressDialog = null; 

private void btnProcess_Click(object sender, EventArgs e) 
{ 
    this.Hide(); 
    progressDialog = new frmProgressbar(); 
    worker = new BackgroundWorker(); 
    worker.WorkerReportsProgress = true; 
    worker.WorkerSupportsCancellation = true; 
    worker.DoWork += new System.ComponentModel.DoWorkEventHandler(worker_DoWork); 
    worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
      worker_RunWorkerCompleted); 
    worker.RunWorkerAsync(); 
    progressDialog.ShowDialog(); 
} 
void worker_DoWork(object sender, DoWorkEventArgs e) 
{ 
    // Do the lengthy work 
} 
void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
{ 
    progressDialog.Close(); 
} 
+1

它沒有得到最小化。你調用Hide(),但是你忘記在RunWorkerCompleted事件處理程序中再次調用Show()。 –

+0

上面的代碼是不是主要的形式,它是其中用戶正在選擇的文件的對話框,所以我打電話隱藏()來隱藏對話框不是主要的形式。 –

回答

0

嘗試提供母體形式ShowDialog方法

progressDialog.ShowDialog(this); 
+0

它爲我工作,但我不明白,我做了什麼,你可以提供一點信息嗎?在此先感謝 –

+0

我很抱歉,但我無法解釋。我只知道這個無主對話框的副作用。還有與沒有父對象的DialogBox()相關的其他副作用。 –

+0

對,不用擔心,我會從我的朋友那裏找到信息,「搜索引擎」:) –

0
 private Thread progressThread; 

private void Btn_Upload_Click(object sender, EventArgs e) 
    { 

     Thread.CurrentThread.Priority = ThreadPriority.Highest; 
     progressThread = new Thread(new ThreadStart(ShowProgressWindow)); 
     progressThread.Priority = ThreadPriority.Lowest; 
     progressThread.Start(); 

    // do your operation here... 
     Class_Upload_SSRD.Search_All_Ptags(Cbox_Ptag_names, label4); 
    ///close porcess once ur work is done... 
     progressThread.Abort(); 
     Thread.CurrentThread.Priority = ThreadPriority.Normal; 
     this.Show(); 
    } 

//進度條函數

public void ShowProgressWindow() 
    { 
     Progress_bar pb = new Progress_bar(); 
     pb.ShowDialog(); 
    } 

創造親格雷斯窗口的形式,這將是可見的,如圖圖像時操作被perfoemed enter image description here