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");//visual studio 不喜欢这个

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

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

4

2 回答 2

2

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

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

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

TextBox txtInstallPath = (TextBox)this.Controls.Find("installPath", true)[0];
于 2012-11-14T22:59:49.653 回答
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;
    }
}
于 2012-11-14T23:03:31.480 回答