如何访问匿名控件的结果?

时间:2013-03-29 11:36:12

标签: c# events anonymous-function

我有这段代码

 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; 
    }

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

如果匿名,我如何在此上下文中访问此控件?

编辑:好的,正如格兰特指出的那样,它不是匿名,而是我没有对它的引用,所以是否有可能获得它的访问存储其参考

2 个答案:

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

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

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