Dosya iletişim kutusunu aç ve WPF denetimlerini ve C # kullanarak bir dosya seçin


189

Ben var TextBoxadlandırılmış textbox1ve bir Buttonadlandırılmış button1. Ben tıkladığınızda button1sadece görüntü dosyaları (tip jpg, png, bmp ...) aramak için dosyalarımı göz atmak istiyorum. Bir görüntü dosyası seçtiğimde ve dosya iletişim kutusunda Tamam'ı tıkladığımda dosya dizininin şu şekilde yazılmasını textbox1.textistiyorum:

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

Yanıtlar:


440

Böyle bir şey ihtiyacınız olan şey olmalı

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 (sonuç == true) yerine if (sonuç.HasDeğer && sonuç.Değer)
eflles

2
@efles msdn.microsoft.com/en-us/library/… adresindeki resmi örnek kod üzerinden yolunuzun sağladığı değer nedir?
Dirk Bester

5
@eflles Örnek teknik olarak doğrudur. Gönderen msdn.microsoft.com/en-us/library/2cf62fcy.aspx : Eğer null türleri ile karşılaştırmalar gerçekleştirdiğinizde null türlerinden birinin değeri null ve diğer değilse, bütün karşılaştırmalar hariç yanlış olarak değerlendirmek! = (eşit değil). Bununla birlikte, bunun bu teknikten istifade edilip edilmediğini iddia edebilirim (kişisel olarak bu durumda sorun olmadığını düşünüyorum).
Ohad Schneider

1
@Terribad elbette! XAML'deki metin kutusuna bağlı olan özelliği güncelleyin, örn.this.FileName = filename
Ohad Schneider

1
@ sproketboy Ben bir "saf 64 bit masaüstü uygulaması" ile ne demek istediğiniz konusunda tam bir karışıklık itiraf etmeliyim; daha fazla açıklayabilir misin Benim anlayış Microsoft.Win32kütüphaneler temel OS için yönetilen bir API olmasıdır; işletim sistemi ile nasıl konuştukları (x64 64bit) uygulamamın geri kalanıyla ilgisi olmamalı ve işletim sistemi API'larının kendilerine eski nedenlerden dolayı 'blah32' deniyor.
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;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.