如何通过名称获得控件

时间:2012-11-14 22:54:42

标签: c# .net winforms

我正在努力获得如何获得当前形式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"); // visual studio不喜欢这个

Control myControl1 = FindControl("installPath"); //也不喜欢这个

我还看到了其他一些方法。虽然我似乎找不到视觉工作室会接受的。我觉得我错过了关于这个事件监听器的上下文的一些相当明显/巨大的东西,这就是为什么我无法弄清楚如何实现这个目标。

2 个答案:

答案 0 :(得分:2)

为什么不this.installPath.Text = folder.SelectedPathTextBox是另一种形式吗?

顺便说一句,您已经在ASP.NET网站上看到了FindControl方法。

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

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

答案 1 :(得分: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;
    }
}