如何访问匿名控件'

本文关键字:控件 何访问 访问 | 更新日期: 2023-09-27 18:06:32

我有这样的代码

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

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

考虑到它的匿名性,我如何在这个上下文中访问这个控件?

EDIT:好吧,正如Grant指出的,这不是关于匿名,而是我没有对它的引用,所以有没有一种可能的方法可以在不存储其引用的情况下获得其访问 ?

如何访问匿名控件'

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

好吧,也许这不是问题的确切答案,但这是唯一相同的方法。

如果不存储对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;
    }
};