ファイルダイアログを開き、WPFコントロールとC#を使用してファイルを選択します


189

私がしているTextBoxという名前textbox1Button命名しますbutton1。をクリックするbutton1と、ファイルを参照して画像ファイル(jpg、png、bmpなど)のみを検索します。そして、画像ファイルを選択して、ファイルダイアログで[OK]をクリックすると、次のtextbox1.textようにファイルディレクトリが書き込まれます。

textbox1.Text = "C:\myfolder\myimage.jpg"

回答:


439

そのようなものがあなたが必要とするものでなければなりません

private void button1_Click(object sender, RoutedEventArgs e)
{
    // Create OpenFileDialog 
    Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();



    // Set filter for file extension and default file extension 
    dlg.DefaultExt = ".png";
    dlg.Filter = "JPEG Files (*.jpeg)|*.jpeg|PNG Files (*.png)|*.png|JPG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif"; 


    // Display OpenFileDialog by calling ShowDialog method 
    Nullable<bool> result = dlg.ShowDialog();


    // Get the selected file name and display in a TextBox 
    if (result == true)
    {
        // Open document 
        string filename = dlg.FileName;
        textBox1.Text = filename;
    }
}

20
if(result.HasValue && result.Value)の代わりにif(result == true)
eflles

2
@eflesあなたの方法での公式のサンプルコードの上に提供した値である何msdn.microsoft.com/en-us/library/...は
Dirk Bester 2014

5
@efllesサンプルは技術的に正しいです。msdn.microsoft.com/en-us/library/2cf62fcy.aspxから:null許容型との比較を実行するときに、null許容型の1つの値がnullで、他の値がnullでない場合、!を除くすべての比較はfalseと評価されます。 =(等しくない)。ただし、これがこの専門性の悪用であるかどうかについては、議論の余地があると思います(個人的には、この場合は問題ないと思います)。
Ohad Schneider 2014

1
もちろん@Terribad!単純例えば、XAMLでテキストボックスにバインドされていますプロパティを更新this.FileName = filename
オハッドシュナイダー

1
@sproketboy「純粋な64ビットデスクトップアプリケーション」が何を意味するかについて、私は完全な混乱を告白しなければなりません。さらに説明してもらえますか?私の理解では、Microsoft.Win32ライブラリーは基礎となるOSに対するマネージAPIです。OSとの通信方法は、残りの(x64 64ビット)アプリケーションには関係ありません。OSAPI自体は、従来の理由で「blah32」とのみ呼ばれています。
VisualMelon

23
var ofd = new Microsoft.Win32.OpenFileDialog() {Filter = "JPEG Files (*.jpeg)|*.jpeg|PNG Files (*.png)|*.png|JPG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif"}; 
var result = ofd.ShowDialog();
if (result == false) return;
textBox1.Text = ofd.FileName;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.