Cuni
10-09-2009, 09:58 AM
Trong một ứng dụng, có rất nhiều tài nguyên như: các file hình ảnh, âm nhạc, văn bản... Vậy bạn có biết Làm thế nào để lưu tất cả những tài nguyên đó vào cùng một file không? Và sẽ làm như thế nào? Bài viết này, mình sẽ giới thiệu cho các bạn cách làm việc với các file tài nguyên Resource: lưu trữ và đọc các thông tin đó.
Chúng ta sẽ xây dựng một ứng dụng cho phép nhập thông tin về một người bao gồm:
- Tên
- Tuổi
- Địa Chỉ
- Điện Thoại
- Ảnh
và lưu trữ tất cả thông tin này vào file tài nguyên có tên là PersonInfo.Resources.
http://img93.imageshack.us/img93/6871/giaodienchinhca5.jpg
Đầu tiên, chúng ta sẽ viết sự kiện để lấy hình ảnh và hiển thị hình ảnh đó
private void btnGetImage_Click(object sender, System.EventArgs e)
{
openFileDialog1.ShowDialog();
txtImage.Text = openFileDialog1.FileName.ToString();
Bitmap bm = new Bitmap(openFileDialog1.FileName.ToString());
pictureBox1.Image = bm;
}
Bây giờ, ta sẽ viết sự kiện cho nút Add để lưu tất cả thông tin trên vào một file Resource:
private void btnAdd_Click(object sender, System.EventArgs e)
{
ResourceWriter resW = new ResourceWriter("PersonInfo.resources
using(Image img = pictureBox1.Image)
{
resW.AddResource("Name", txtName.Text);
resW.AddResource("Age", txtAge.Text);
resW.AddResource("Address", txtAddress.Text);
resW.AddResource("Phone", txtPhone.Text);
resW.AddResource("Image", img);
resW.Close();
}
MessageBox.Show("Successful Act!");
}
Vậy là xong bước thứ nhất
Tiếp theo, ta sẽ tạo một ứng dụng khác để đọc các thông tin từ file tài nguyên đó:
http://img140.imageshack.us/img140/8630/giaodien2lt6.jpg
Chúng ta viết sự kiện cho nút Get Infor:
private void btnAdd_Click(object sender, System.EventArgs e)
{
Assembly as1 = Assembly.GetExecutingAssembly();
ResourceManager rm = new ResourceManager("ReadingResource.PersonInfo", as1);
txtName.Text = rm.GetString("Name").ToString();
txtAge.Text = rm.GetString("Age").ToString();
txtAddress.Text = rm.GetString("Address").ToString();
txtPhone.Text = rm.GetString("Phone").ToString();
pictureBox1.Image = (Image) rm.GetObject("Image");
}
Ở đây, ta cần phải chú ý khi đọc file tài nguyên:
ResourceManager rm = new ResourceManager("ReadingResource.PersonInfo", as1);
Phải có Namespace ReadingResource rồi mới gọi đến tên của file tài nguyên đó là PersonInfo
(Sưu tầm)
Chúng ta sẽ xây dựng một ứng dụng cho phép nhập thông tin về một người bao gồm:
- Tên
- Tuổi
- Địa Chỉ
- Điện Thoại
- Ảnh
và lưu trữ tất cả thông tin này vào file tài nguyên có tên là PersonInfo.Resources.
http://img93.imageshack.us/img93/6871/giaodienchinhca5.jpg
Đầu tiên, chúng ta sẽ viết sự kiện để lấy hình ảnh và hiển thị hình ảnh đó
private void btnGetImage_Click(object sender, System.EventArgs e)
{
openFileDialog1.ShowDialog();
txtImage.Text = openFileDialog1.FileName.ToString();
Bitmap bm = new Bitmap(openFileDialog1.FileName.ToString());
pictureBox1.Image = bm;
}
Bây giờ, ta sẽ viết sự kiện cho nút Add để lưu tất cả thông tin trên vào một file Resource:
private void btnAdd_Click(object sender, System.EventArgs e)
{
ResourceWriter resW = new ResourceWriter("PersonInfo.resources
using(Image img = pictureBox1.Image)
{
resW.AddResource("Name", txtName.Text);
resW.AddResource("Age", txtAge.Text);
resW.AddResource("Address", txtAddress.Text);
resW.AddResource("Phone", txtPhone.Text);
resW.AddResource("Image", img);
resW.Close();
}
MessageBox.Show("Successful Act!");
}
Vậy là xong bước thứ nhất
Tiếp theo, ta sẽ tạo một ứng dụng khác để đọc các thông tin từ file tài nguyên đó:
http://img140.imageshack.us/img140/8630/giaodien2lt6.jpg
Chúng ta viết sự kiện cho nút Get Infor:
private void btnAdd_Click(object sender, System.EventArgs e)
{
Assembly as1 = Assembly.GetExecutingAssembly();
ResourceManager rm = new ResourceManager("ReadingResource.PersonInfo", as1);
txtName.Text = rm.GetString("Name").ToString();
txtAge.Text = rm.GetString("Age").ToString();
txtAddress.Text = rm.GetString("Address").ToString();
txtPhone.Text = rm.GetString("Phone").ToString();
pictureBox1.Image = (Image) rm.GetObject("Image");
}
Ở đây, ta cần phải chú ý khi đọc file tài nguyên:
ResourceManager rm = new ResourceManager("ReadingResource.PersonInfo", as1);
Phải có Namespace ReadingResource rồi mới gọi đến tên của file tài nguyên đó là PersonInfo
(Sưu tầm)