[VS2013][C#][Win Form] Làm việc với file (Phần 1)
Bài đăng này đã không được cập nhật trong 3 năm
Vấn đề đặt ra
Chắc hẳn nhiều nguời dung, khi họ thấy gì đó hữu ích từ đâu đó như trên mạng, usb, ... họ thường copy file đó về máy. Không phải người dùng nào cũng đều có biết cách quy hoạch những file quan trọng. Do vậy khi cần dùng đến thì không nhớ mình đã lấy file này ở đâu, hay muốn tìm kiếm sẽ như thế nào. Vậy hôm nay, tôi cùng các bạn đi tìm cách để giải quyết vấn đề này.
Các giải quyết vấn đề
Vì là chỉ xử lý ở trên chính máy của người dùng do vậy chúng ta nên sử dụng bộ phần mềm hỗ trợ lập trình của Microsft đó là Visual Studio. Ở bài viết này tôi sẽ sử dụng Visual Studio 2013. Về cách xử lý vấn đề này tôi đưa tạm ra hướng như sau:
- Sẽ tạo ra 1 button cho người dùng chọn những file họ thấy cần thiết.
- Sau đó file này được copy vào 1 nơi, có lẽ sẽ cho chung vào folder của project.
- Lưu database những file này vào. Ở đây sẽ sử dụng database là Access 2010.
- Sau đố làm màn hình hiển thị danh sách cũng như tìm kiếm.
Khởi tạo Project
Sau khi chạy Visutal Studio 2013, sẽ ra màn hình khơi động như sau: Chúng ta click vào New Project Tại đây ta sẽ chọn Windown Form Application. Name: Tên của dự án Location: Nơi chứa file dự án SolutionName: Tên folder chứa dự án. Trong phần này tôi sẽ điền là: Name: HoSoFile Location: D:/vs2013/ SolutionName: HoSoFile Sau khi nhập xong đợi 1 lúc thì ta sẽ ra màn hình bắt đầu làm dự án.
Chức năng chọn file
Đầu tiên ta làm giao diện
Trong window form của visual studio mỗi màn hình sẽ được gọi là 1 Form. Và thường sẽ có 3 file cho 1 form. File .cs: Là file làm việc ở tầng trong (Code C#) File .designer.cs: Là file cấu trúc dạng XML và quy ước phần giao diện thanh các thẻ kiểu XML. Visual Studio rất mạnh trong việc chủ động thiết kế giao diện từng Form. Ở bên trái là thanh công cụ Tool, tại đây cho phép lựa chọn các công cụ rồi có thể kéo thả: Với mỗi đối tượng thì ta đều có bảng thuộc tính: và mỗi 1 đối tượng khác nhau thì thuộc tính này sẽ khác nhau. Giờ chúng ta sẽ tạo 1 button và khi click vào nó ta sẽ chọn file để đưa lên. Vậy button đó sẽ như sau: Name: btn_upload Title: Chọn file.
Thực thi việc chọn file
Sau khi tạo nút như ở bước trên, sau đó chọn phần event ta bắt sự kiện, ở đây tôi sẽ bắt sự kiện khi click vào bằng hàm btn_upload_Click
private void btn_upload_Click(object sender, EventArgs e)
{
OpenFileDialog uploadFileSteam = new OpenFileDialog();
uploadFileSteam.InitialDirectory = "c:\\";
}
Ở đây tôi sử dụng thư viện OpenFileDialog do vậy để sử dụng ta cần khai báo System.Windows.Forms Khi sử dụng hộp hoi thoại này sẽ cho ta chọn file như sau: Vì ở đây ta có uploadFileSteam.InitialDirectory = "c:\"; tức mỗi khi hộp hội thoại mở ra thì cái folder đầu tiên sẽ là C: tức là ổ C. Ngoài ra để xử lý thêm hộp hội thoại này, ta có thể thực hiện chức năng lọc. Ví dụ như tôi muốn có 2 lựa chọn Word là những file có đuôi là .doc | .docx và Excel là file có đuôi là .xls | .xlsx. Để làm vậy ta cần thêm đoạn như sau:
uploadFileSteam.Filter = "Word|*.doc;*.docx|Excel|*.xls;*.xlsx";
Và khi chạy thử Project thành quả thu được sẽ như sau: Và giờ ta cần việc copy file vừa chọn vào folder của dự án, Để copy ta sử dụng class File của System.IO;
File.Copy(uploadFileSteam.FileName, Directory.GetCurrentDirectory() + "\\Data\\" + uploadFileSteam.SafeFileName);
Với câu lệnh như thế này ta sẽ hiểu là ta sẽ copy file được chọn từ hộp họi thoại vào folder hiện tại (Folder) chưa file .exe và trong Folder Data. Vậy việc copy này chỉ thực hiện khi ta đã chọn File, để biết được việc đã chọn file thành công ta sẽ làm như sau
if (uploadFileSteam.ShowDialog() == DialogResult.OK)
{
File.Copy(uploadFileSteam.FileName, Directory.GetCurrentDirectory() + "\\Data\\" + uploadFileSteam.SafeFileName);
}
Vậy toàn bộ sự kiện khi click chuột vào button btn_upload sẽ như sau
private void btn_upload_Click(object sender, EventArgs e)
{
OpenFileDialog uploadFileSteam = new OpenFileDialog();
uploadFileSteam.InitialDirectory = "c:\\";
uploadFileSteam.Filter = "Word|*.doc;*.docx|Excel|*.xls;*.xlsx";
uploadFileSteam.FilterIndex = 2;
if (uploadFileSteam.ShowDialog() == DialogResult.OK)
{
File.Copy(uploadFileSteam.FileName, Directory.GetCurrentDirectory() + "\\Data\\" + uploadFileSteam.SafeFileName);
}
}
Tạm kết
Do người viết đang làm quen với Visual Studio cho nên việc sư dụng các function hay class chưa tối ưu nhưng cũng có thể giúp những bạn này mới tìm hiểu Visual Studio như mình. Việc hỗ trợ làm giao diện của VS khá là mạnh và rất tùy biến nên làm việc với các đối tượng đó rất dễ dàng và thoải mái. Bài viết này thuộc bản quyền của Framgia.
All rights reserved