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

他にも多くの方法があることは知っています。このダイアログ ボックスの変数を作成して、必要なことを実行したり、匿名関数を使用したりしないでください。しかし、それは重要ではありません。知りたいのは

匿名性を考えると、このコンテキストでこのコントロールにアクセスするにはどうすればよいですか?

EDIT:さて、グラントが指摘したように、それは匿名性についてではなく、私はそれへの参照を持っていないので、その参照を保存せずにそのアクセスを取得する方法はありますか?

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 に答える