2012-11-14 113 views
0

我正在努力獲得正確的上下文,以獲取當前處於我的表單中的TextBox如何通過名稱獲得控件

現在我有一個按鈕,當按下時將允許用戶選擇一個文件夾。我想採取這種方式,並把它放在TextBox目前名爲installPath

namespace CustomLauncher 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void browse_Click(object sender, EventArgs e) 
     { 
      //browse to select a folder 
      FolderBrowserDialog folder = new FolderBrowserDialog(); 
      DialogResult result = folder.ShowDialog(); 
      if (result == DialogResult.OK) 
      { 
       MessageBox.Show("You chose" + folder.SelectedPath); 
      } 
      else if (result == DialogResult.Cancel) 
      { 
       return; 
      } 
     } 

我已經看到了各種嘗試,就像...

this.Controls.Find("installPath"); //視覺工作室不喜歡這個

Control myControl1 = FindControl("installPath"); //不喜歡這個既

我我也看到了一些其他的做法。雖然我似乎無法找到一個視覺工作室會接受的。我覺得我錯過了這個事件監聽器的上下文相當明顯/巨大的東西,這就是爲什麼我無法弄清楚如何實現這一點。

+2

爲什麼不'this.installPath.Text = folder.SelectedPath'?順便說一句,你已經看到ASP.NET網站上的FindControl方法。 –

回答

2

爲什麼不是this.installPath.Text = folder.SelectedPath?另一種形式是TextBox

順便說一下,你已經看到了ASP.NET網站上的FindControl方法。

如果您使用.NET 2或更高版本,則可以使用Control.ControlCollection.Find Method

TextBox txtInstallPath = (TextBox)this.Controls.Find("installPath", true)[0]; 
0

嘗試使用此代碼:

private void browse_Click(object sender, EventArgs e) 
{ 
    //browse to select a folder 
    FolderBrowserDialog folder = new FolderBrowserDialog(); 
    DialogResult result = folder.ShowDialog(); 
    if (result == DialogResult.OK) 
    { 
     installPath.Text = folder.SelectedPath; 
     MessageBox.Show("You chose" + folder.SelectedPath); 
    } 
    else if (result == DialogResult.Cancel) 
    { 
     return; 
    } 
}