0

我有这个代码

 textBox1.MouseDown += (o, em) => 
if (new FolderBrowserDialog
    { 
        RootFolder = Environment.SpecialFolder.Desktop 
    }.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
    {   
        textBox1.Text =  // how do I know HERE, that what was the selected folder in the dialog box?
        // something like
        // textBox1.Text = thisDialogBox.SelectedFolder; 
    }

我知道还有很多其他方法,我可以为这个对话框创建一个变量,然后做我需要的事情,或者不使用匿名函数等。但这不是重点,我想知道的是

鉴于其匿名性,我如何在这种情况下访问此控件?

编辑:好的,正如格兰特指出的那样,它不是关于匿名性,而是我没有对它的引用,那么有没有一种可能的方法来获取它的访问权限而不存储它的引用

4

2 回答 2

1
textBox1.MouseDown += (o, em) =>
{
    var dialog = new FolderBrowserDialog
    { 
        RootFolder = Environment.SpecialFolder.Desktop 
    };
    if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
    {   
        textBox1.Text = dialog.SelectedFolder;
    }
}

好的,可能不是问题的确切答案,但这是唯一明智的方法。

于 2013-03-29T11:38:10.023 回答
0

如果不存储对FolderBrowserDialog. 在您的示例中,一旦ShowDialog终止,FolderBrowserDialog则超出范围。您唯一的选择是存储参考:

textBox1.MouseDown += (o, em) =>
{
    using (var dialog = new FolderBrowserDialog())
    {
        dialog.RootFolder = Environment.SpecialFolder.Desktop;

        if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            textBox1.Text = dialog.SelectedPath;
    }
};
于 2013-03-29T14:10:57.923 回答