2014-03-26 46 views
2

我有WindowsForm的解決方案,用datagridview來顯示我從文本文件中讀取的數據。來自數據的行數很大,約爲10.000行。缺少DataGridview滾動條C#WinForm

當我從visual studio運行程序時,它似乎很好。但是,當我從Debug文件夾(.exe文件)運行它時,那麼我的datagridview出了問題。滾動條丟失。

這裏是我填的datagridview:

private void LoadInputData() 
    { 
     try 
     { 
      InputDataGridView.DataSource = null; 
      InputDataGridView.Refresh(); 
      InputDataGridView.DataSource = inputDataTable; 
      DisableCells(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString(), "Load Input Data Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
    } 

我有一個設計來從文本文件填充inputDataTable的功能。 DisableCells()功能是鎖定datagridview(即設置readonly propertiestrue)並自定義列長度。

數據仍然可以通過鼠標滾動。它是如何發生的?我該如何解決這個問題?

這裏是我的程序的預覽:link

回答

1

我解決的問題。它由背景工作者造成。我不知道如何解釋技術概念。但是,我做到了。

我移動LoadInputData();線。以前,我把它放在private void OpenDataBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)函數裏面。然後,我將它移到了背景工作者之外的另一個地方。它可以在下面的代碼中看到。

以前: (見 「//」)

private void OpenDataBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
    { 
     try 
     { 
      //LoadInputData(); 
      CalculateRowAndColumnInNumericUpDown(); 
      mainForm.MainToolStripProgressBar.Value = 0; 
      this.Cursor = Cursors.Default; 
      OpenDataButton.Enabled = true; 

      ProcessGroupBox.Enabled = true; 
      ClearAllDataButton.Enabled = true; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString(), "Open Data Background Worker RunWorkerCompleted Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
    } 

到這個地方:

private void OpenDataButton_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      OpenDataButton.Enabled = false; 

      if (!OpenDataBackgroundWorker.IsBusy) 
      { 
       OpenFileDialog openData = new OpenFileDialog(); 
       openData.Multiselect = true; 
       openData.ShowDialog(); 
       openData.Filter = "allfiles|*"; 

       if (openData.FileName != "") 
       { 
        ClearInputDataTable(); 
        LoadInputData(); 
        OpenDataBackgroundWorker.WorkerReportsProgress = true; 
        OpenDataBackgroundWorker.WorkerSupportsCancellation = true; 
        OpenDataBackgroundWorker.RunWorkerAsync(openData.FileName); 
       } 
      } 
      //here!!! 
      LoadInputData(); 
      OpenDataButton.Enabled = true; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString(), "Error - Open Data", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
    } 
+0

完全一樣。 在後臺加載之前通過設置「datagridview.Datasource = NULL」進行修復,並將其設置回:「datagridview.Datasource = bindingsource」 – parfilko

0

添加一些像這樣滾動條添加到DataGridView如果滾動條是缺少

InputDataGridView.ScrollBars == Windows.Forms.ScrollBars.Both 
'or 
InputDataGridView.ScrollBars == Windows.Forms.ScrollBars.Vertical 
+1

我做過喲你的建議。但它沒有解決我的問題。在那裏有痕跡scrolbarr,但白色的顏色。這個過程也比我在Visual Studio中運行時間要長。 – ehmind

+0

這是我的程序預覽(點擊鏈接):[鏈接](http://i58.tinypic.com/qn6xys.jpg) – ehmind

-1

簡單,你叫禁用細胞的方法

後添加此行
myDataGridView.ScrollBars = ScrollBars.Both;