Відкрийте діалогове вікно і виберіть файл за допомогою елементів керування WPF та C #


189

У мене є TextBoxіменований textbox1і Buttonназваний button1. Коли натискаю кнопку, button1я хочу переглянути свої файли, щоб шукати лише файли зображень (введіть jpg, png, bmp ...). І коли я вибираю файл зображення та натискаю кнопку Ok у діалоговому вікні файлу, я хочу, щоб каталог файлів був записаний textbox1.textтак:

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

Відповіді:


440

Щось таке повинно бути тим, що вам потрібно

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 (результат == вірно)
eflles

2
@efles, яке значення надає ваш офіційний код у форматі msdn.microsoft.com/en-us/library/… ?
Дірк Бестер

5
@eflles Зразок технічно правильний. Від msdn.microsoft.com/en-us/library/2cf62fcy.aspx : Коли ви здійснюєте порівняння з нульовими типами, якщо значення одного з типів, що зводиться нанівець, є нульовим, а інше - ні, всі порівняння оцінюються як помилкові, за винятком! = (не дорівнює). Однак я гадаю, що можна стверджувати, чи це експлуатація цієї технічності (я особисто думаю, що це нормально в даному випадку).
Охад Шнайдер

1
@Terribad звичайно! Просто оновіть властивість, прив’язану до текстового поля в XAML, наприкладthis.FileName = filename
Охад Шнайдер

1
@sproketboy Я мушу визнати повну плутанину щодо того, що ви маєте на увазі під "чистим 64-бітним настільним додатком"; ви могли б пояснити далі? Я розумію, що Microsoft.Win32бібліотеки - це керований API базової ОС; те, як вони розмовляють з ОС, не повинно турбувати решту мого (x64 64bit) додатку, а самі API ОС називаються "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;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.