我有这段代码
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;
}
我知道还有很多其他的方法,我可以为这个对话框创建一个变量,并且做我需要的,或者不使用匿名函数等。但这不是重点,我想知道的是
如果匿名,我如何在此上下文中访问此控件?
编辑:好的,正如格兰特指出的那样,它不是匿名,而是我没有对它的引用,所以是否有可能获得它的访问存储其参考?
答案 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;
}
};