2015-05-04 93 views
0

我已經使用Telerik瀏覽編輯器在我的程序上打開一個文件。但由於某種原因,它要求我提供兩次文件。從下面的代碼可以看到爲什麼?OpenFileDialog C#詢問打開兩次?

private void radBrowseEditor1_ValueChanged(object sender, EventArgs e) 
    { 
     using (OpenFileDialog openFileDialog = new OpenFileDialog()) 
     { 
      openFileDialog.Title = @"Open .HRM File"; 
      openFileDialog.InitialDirectory = @"C:\Users\mike\Desktop"; 
      openFileDialog.Filter = @"HRM files (*.hrm)|*.hrm|All files (*.*)|*.*"; 
      openFileDialog.FilterIndex = 2; 
      openFileDialog.RestoreDirectory = true; 

      if (openFileDialog.ShowDialog() == DialogResult.OK) 
      { 

      } 

      using (StreamReader reader = new StreamReader(openFileDialog.FileName, System.Text.Encoding.Default)) 
      { 
       HRM.Active.Raw = reader.ReadToEnd(); 
      } 
     } 
    } 

可能是一件非常簡單的事情。很確定我在安裝Telerik之前有一個工具條時使用的代碼,它工作正常。

+2

使用調試器,添加斷點。 ShowDialog()被調用兩次嗎? – DrKoch

+2

也許你正在調用'radBrowseEditor1_ValueChanged'兩次。或者將其分配給事件處理程序兩次。 – Orifjon

+0

在回覆這兩個問題時,不,我找不到他們中的任何一個叫過兩次。 – mvoase

回答

0

看完這個後,http://www.telerik.com/help/winforms/editors-browse-editor-working-with.html,好像你甚至不需要打開openFileDialog。它看起來像你應該檢查值不是空白。

private void radBrowseEditor1_ValueChanged(object sender, EventArgs e) 
{ 
    if (!string.IsNullOrEmpty(radBrowseEditor1.Value.ToString())) 
    { 
     using (StreamReader reader = new StreamReader(radBrowseEditor1.Value.ToString(), System.Text.Encoding.Default)) 
     { 
      HRM.Active.Raw = reader.ReadToEnd(); 
     } 
    } 
} 
+0

由於我的代碼的其餘部分以及它從加載的文件中計算數據的方式,這不起作用。 – mvoase

+0

@ user2913240您的原始解決方案如何工作,除了打開兩次對話窗口? – Shar1er80

+0

這是頂部的代碼,即解決方案的工作原理。然後它從txt文件中逐行讀取數據並將其放入datagridview中。與之前用於toolstripmenuItem_Clicked的代碼相同,它的工作非常完美。 – mvoase