Computer - Communication - Control. 3C INC
 
Nhiều người quan tâm
Skip List - đối thủ của cây cân bằng
Trong Java, làm thế nào để lấy processor ID (CPU)?
Visual Foxpro 9.0
Hướng dẫn sử dụng công cụ eclipse lập trình java (Phần 1: download và cài đặt)
Hướng dẫn sử dụng công cụ eclipse lập trình java (Phần 2: Hướng dẫn kéo thả Giao diện)
Java cơ bản đến nâng cao (phần I)

Lập trình


In bài này Gửi bài viết này cho bạn bè
(Thứ Tư, 29/04/2009-10:42 AM)
Sử dụng Delegate để truyền giá trị trong C#
Để có thể viết được một ứng dụng phần mềm, bạn phải biết cách truyền giá trị qua lại giữa các Form.
 

Tuy nhiên, khi ta muốn lấy giá trị từ nhiều Form khác, chắc chúng ta sẽ gặp rắc rối với những cách làm thông thường. Delegate sẽ giúp chúng ta giải quyết vấn đề.


Trước hết, tôi sẽ trình bày cho các bạn cách truyền giá trị theo cách thông thường.

Dưới đây là giao diện của các Form:

Đây là giao diện của Form chính. có 2 textbox để hiển thị giá trị lấy từ các Form khác. 2 button có chức năng hiển thị các form mà mình muốn lấy giá trị.



Còn đây là giao diện của Form 1, Gồm 1 textbox để nhập giá trị, nút button để xác nhận giá trị đó và truyền giá trị được nhập trong ô textbox cho form chính.



Tương tự như Form 1, Form 2 cũng gồm 1 textbox để nhập giá trị, nút button để xác nhận giá trị đó và truyền giá trị được nhập trong ô textbox cho form chính.



1. Với việc truyền giá trị thông thường:

- Trong Form Chính:

// Ta khai báo trường để lưu giá trị.

private string _getFirstValue = null;

// Thuộc tính này có nhiệm vụ lấy giá trị từ các Form khác.
public string GetFirstValue
{
get
{
return _getFirstValue;
}

set
{
_getFirstValue = value;
}
}

Và viết sự kiện cho nút btnGetValue1:

private void btnGetValue1_Click(object sender, EventArgs e)
{
frmFirstValue first = new frmFirstValue();
first.ShowDialog();
}

Và khi Form chính được hiển thị, ta phải hiển thị nhận được thông qua các thuộc tính GetFirstValue.

private void frmMain_Load(object sender, EventArgs e)
{
txtFirstValue.Text = GetFirstValue;
txtSecondValue.Text = GetSecondValue;
}


- Đối với Form 1: Ta chỉ cần viết sự kiện cho Nút btnSend:

private void btnSend_Click(object sender, EventArgs e)
{
frmMain main = new frmMain();
main.GetFirstValue = txtValue.Text; // Truyền giá trị cho Form chính thông qua thuộc tính GetFirstValue.
main.ShowDialog();
this.Hide();

}


việc khai báo và xử lý sự kiện đối với Form 2 tương tự. Nhưng trong trường hợp này, khi lấy giá trị từ 2 Form khác nhau, cách truyền giá trị thông thường này sẽ không thể làm được. Vậy cách khác, ta sẽ dùng Delegate để giải quyết vấn đề:

2. Sử Dụng Delegate:

- Dùng Delegate sẽ giúp chúng ta quyết định xem hàm nào sẽ được trong lúc chạy. Về mặt kỹ thuật, Delegate là một dạng tham chiếu được sử dụng để đóng gói 1 hàm với giá trị xác thực và kiểu giá trị trả về.

- Trong Form 1: Ta khai báo Delegate có tên là PassData có 1 tham số kiểu string và ko có giá trị trả về.

public delegate void PassData(string value);
public PassData passData;

private void btnSend_Click(object sender, EventArgs e)
{

if (passData != null)
{
passData(txtValue.Text);
}
this.Hide();

}


- Còn trong Form chính: Ta viết Hàm GetFirstValue phải giống như khi khai báo Delegate: có 1 giá trị truyền vào là kiểu chuỗi, và không có giá trị trả về.

public void GetFirstValue(string value)
{
txtFirstValue.Text = value;
}



Ta viết sự kiện cho nút btnGetValue1:

private void btnGetValue1_Click(object sender, EventArgs e)
{

frmFirstValue first = new frmFirstValue();
first.passData = new frmFirstValue.PassData(GetFirstValue);
first.Show();

}



Nguồn: Zensoft

   "Những kiến thức cần cho cuộc sống"   www.bachkhoatrithuc.vn

Download Portable IDM
PM download file trên mạng cực nhanh, nhỏ gọn, miễn phí

   Download Winrar 3.80
PM nén và giải nén file xuất sắc. Chương trình nhỏ gọn, dễ sử dụng.

    [ Các bài mới ]
    [ Các bài đã đăng ]

    Download BKAV Home
    phiên bản mới nhất

    Bài mới cập nhật
    Virus “tự lai tạo” đang thách thức các phần mềm bảo mật
    Laptop 3D Asus được bán tại VN giá 51,6 triệu đồng
    Phân tích hành động của Malware với Joebox Online Sandbox
    Lấy thông tin thư mục nhanh chóng với GetFoldersize
    Nokia N900 bán tại VN giá 12,9 triệu đồng
    Máy tính xách tay có thời lượng pin 18 giờ
    Laptop Samsung lần đầu tiên ra mắt tại Việt Nam
    Laptop đa phương tiện MSI CR620
    Windows Phone 7 không hỗ trợ copy/paste
    Microsoft giới thiệu thử nghiệm sơ bộ Internet Explorer 9
    Điện thoại quay phim HD xuất hiện tại TP HCM
     
     
     
    COMPUTER - COMMUNICATION - CONTROL 3C, INC.
    Số 6 - Láng Hạ - Ba Ðình - Hà Nội; Tel: 84.4.38312695; Fax: 84.4.38311925
    Copyright © 2005 3C INC. All rights reserved.