2013-05-26 19 views
0

我試圖做一個應用程序,當你點擊TextBox選擇文件OpenFileDialog自動打開,無需點擊一個按鈕。如何在Textbox_Click事件中執行OpenFileDialog?

所有我能找到的是this msdn article,並沒有解釋如何實現它。

我應該添加

[BrowsableAttribute(true)] 
public event EventHandler Click 

地方?

這是到目前爲止我的代碼:

private void txtFile_TextChanged(object sender, EventArgs e) 
    { 

     OpenFileDialog OF = new OpenFileDialog(); 
     OF.InitialDirectory = "C:\\"; 
     OF.Filter = "All files (*) | *.*"; 

     if (OF.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      OF.FilterIndex = 0; 
      OF.RestoreDirectory = true; 
      txtFile.Text = (OF.FileName); 
     } 
    } 

編輯:最後的工作。

+1

請不要問「是否有可能...?」這裏的問題。那些通常會很快關閉,因爲答案是「是的,有可能的」或「不,這是不可能的」,這些答案顯然沒有用。你的努力也沒有任何意義 - TextChanged事件將觸發每一個改變文本的擊鍵,這似乎很沒用,並且與鼠標點擊無關。沒有任何其他信息,任何人提供的每個答案都會以「不起作用」作爲迴應。你想讓我們幫你什麼? –

+0

好吧,我讓它工作,不像我真的很喜歡它,但它的工作原理!我用了Ria的建議。 – octohedron

回答

1

嘗試使用OnEnter事件:

輸入控件時發生。

和示例代碼:

txtFile.Enter += (sender, args) => 
    { 
     if(String.IsNullOrEmpty(txtFile.Text)) 
     { 
      var OF = new OpenFileDialog 
      { 
       InitialDirectory = "C:\\", 
       Filter = "All files (*) | *.*" 
      }; 

      if (OF.ShowDialog() == DialogResult.OK) 
      { 
       OF.FilterIndex = 0; 
       OF.RestoreDirectory = true; 
       txtFile.Text = (OF.FileName); 
      } 
     } 
    }; 
+0

我不知道如果即時實施它,但仍然無法正常工作,謝謝你的建議。 – octohedron

+0

在表單cunstructor或'OnLoad'事件中添加此代碼。或者在設計器中將'Enter'事件添加到您的文本框中,並將內部代碼粘貼到'private void txtFile_Enter'方法中 – Ria

+0

好吧,我設法使其工作。謝謝! – octohedron

1

在文本框中使用焦點事件來顯示文件對話框。

的焦點事件將觸發一旦控制接收焦點(點擊或標籤進入):

txtFile.Focus += (sender, args) => 
    { 
     var OF = new OpenFileDialog 
     { 
      InitialDirectory = "C:\\", 
      Filter = "All files (*) | *.*" 
     }; 

     if (OF.ShowDialog() == DialogResult.OK) 
     { 
      OF.FilterIndex = 0; 
      OF.RestoreDirectory = true; 
      txtFile.Text = (OF.FileName); 
     } 
}; 
+0

請您詳細說明一下嗎? – octohedron

+0

已更新。現在更清楚了嗎? –

+0

這可能工作的事情是,當我的表單被打開時,它已經在焦點上,所以也許這就是事件沒有被觸發的原因。 – octohedron

1

設置簡單的TextBoxMouseClick事件到你想要的方式:

private void textBox1_MouseClick(object sender, MouseEventArgs e) 
    { 
     OpenFileDialog ofd = new OpenFileDialog(); 
     ofd.ShowDialog(); 
    } 
+0

無法使其工作 – octohedron

+0

@GustavoRodríguezSuarez,您可以通過屬性窗格或通過代碼'textBox1.MouseClick + = textBox1_MouseClick'來設置事件。在構造函數中。沒有這麼難 –

+0

嗨,感謝您的意見,但它沒有工作。 – octohedron

1

你可以使用鼠標單擊事件

private void textBox1_MouseClick(object sender, MouseEventArgs e) 
{ 
     OpenFileDialog OF = new OpenFileDialog(); 
     OF.InitialDirectory = "C:\\"; 
     OF.Filter = "All files (*) | *.*"; 

     if (OF.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      OF.FilterIndex = 0; 
      OF.RestoreDirectory = true; 
      txtFile.Text = (OF.FileName); 
     } 
} 
+0

終於工作了,謝謝 – octohedron

0

只要到文本框的屬性,然後單擊事件按鈕。 你會發現點擊事件=空白。點擊下拉菜單。例如,如果您已經在他的程序中打開了「打開文件對話框」,請選擇openToolStripMenuItem_Click

注意:不需要額外的代碼

相關問題