使用WPF控件和C#打开文件对话框并选择文件

205

我有一个名为textbox1的文本框和一个名为button1的按钮。 当我点击button1时,我想浏览我的文件以仅搜索图像文件(类型为jpg、png、bmp等)。 当我选择一个图像文件并在文件对话框中单击“确定”时,我希望文件目录被写入textbox1.text中,就像这样:

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

我是tinyfiledialogs的作者。它有C#的绑定(有一个示例文件展示了如何使用它)。 - tinyfiledialogs
2个回答

473

类似这样的东西应该就是你所需要的

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

25
如果(result.HasValue && result.Value)而不是if(result == true) - eflles
3
@efles,您的方法相对于http://msdn.microsoft.com/en-us/library/microsoft.win32.openfiledialog.aspx官方示例代码有何优点?请用通俗易懂的语言解释,但不要改变原意。 - Dirk Bester
11
样本在技术上是正确的。来自http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx的说明:*当您使用可空类型进行比较时,如果其中一个可空类型的值为null而另一个不是,则除了!=(不等于)外,所有比较均计算为false。*但我认为可以争论这是否是利用了这个技术细节(我个人认为在这种情况下是可以的)。 - Ohad Schneider

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接