2012-04-25 24 views
135

Tôi có một số TextBox có tên textbox1Button có tên button1. Khi tôi nhấp vào button1 Tôi muốn duyệt các tệp của mình để chỉ tìm kiếm các tệp hình ảnh (nhập jpg, png, bmp ...). Và khi tôi chọn một tập tin ảnh và bấm Ok trong hộp thoại tập tin Tôi muốn các thư mục tập tin được viết trong textbox1.text như thế này:Mở hộp thoại tệp và chọn tệp bằng điều khiển WPF và C#

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

Trả lời

333

Something như thế nên những gì bạn cần

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

nếu (result.HasValue && result.Value) thay vì nếu (result == true) – eflles

+2

@efles giá trị theo cách của bạn cung cấp trên mã mẫu chính thức tại http://msdn.microsoft.com/en- us/library/microsoft.win32.openfiledialog.aspx? –

+3

@eflles Mẫu kỹ thuật chính xác. Từ http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx: * Khi bạn thực hiện so sánh với các kiểu nullable, nếu giá trị của một trong các loại nullable là null và cái kia thì không, tất cả so sánh sẽ đánh giá sai, ngoại trừ! = (không bằng) * Tuy nhiên tôi cho rằng nó có thể được lập luận cho dù đây là một khai thác của kỹ thuật này (cá nhân tôi nghĩ rằng đó là OK trong trường hợp này). –

16
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; 
Các vấn đề liên quan