2012-11-14 83 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; 
    } 
}