2013-08-14 27 views
12

Tôi có một nút liên kết mà có một sự kiện nhấp chuột thường xuyên:C# vượt qua tham số bổ sung để xử lý sự kiện trong khi ràng buộc sự kiện tại thời điểm chạy

protected void lnkSynEvent_Click(object sender, EventArgs e) 
{ 
} 

Và tôi gắn sự kiện này tại thời gian chạy:

lnkSynEvent.Click += new EventHandler(lnkSynEvent_Click); 

Bây giờ tôi cần các chức năng để chấp nhận thêm đối số:

protected void lnkSynEvent_Click(object sender, EventArgs e, DataTable dataT) 
{ 
} 

Và vượt qua giống như param eter trong khi ràng buộc sự kiện này:

lnkSynEvent.Click += new EventHandler(lnkSynEvent_Click, //somehow here); 

Không chắc chắn cách đạt được điều này. Xin vui lòng giúp đỡ.

Xin cảm ơn trước.

Vishal

+0

DataTable sẽ đến từ đâu? –

+0

@PaulieWaulie ở đó, nơi tôi ràng buộc sự kiện. – Vishal

Trả lời

39

Bạn có thể sử dụng đại biểu vô danh cho rằng:

lnkSynEvent.Click += 
     new EventHandler((s,e)=>lnkSynEvent_Click(s, e, your_parameter)); 
+0

WOW đã làm việc như một sự quyến rũ, cảm ơn @alex, khó khăn, tôi không có nhiều famalier với các đại biểu vô danh được nêu ra. – Vishal

+0

Bạn nên đánh dấu câu trả lời này là chính xác. Điều này có thể giúp đỡ người khác. –

+0

Chỉ cần bạn có thể viết như thế này Object.SomeEvent + = (sender, e) => SomeEventHandler (người gửi, e, "Dữ liệu"); /// Và xác định trình xử lý sự kiện của bạn như thế này void SomeEventHandler (đối tượng người gửi, SomeEventArgs e, dữ liệu chuỗi); –

2

bằng cách sử dụng đại biểu:

lnkbtnDel.Click += delegate(object s, EventArgs e1) { 
       Dynamic_Click(s, e1, lnkbtnDel.ID); 
       };` 
3

Tôi không biết chính xác khi nào nó thay đổi, nhưng bây giờ nó thậm chí còn dễ dàng hơn!

lnkSynEvent.Click += (s,e) => lnkSynEvent_Click(s, e, your_parameter); 
+0

Điều này thực sự hiệu quả hơn trong kịch bản của tôi khi tôi cần ánh xạ EventHandler như mong đợi tới EventHandler . Câu trả lời được chấp nhận không giải quyết được kịch bản này. – Stunt

0
EventHandler myEvent = (sender, e) => MyMethod(myParameter);//my delegate 

myButton.Click += myEvent;//suscribe 
myButton.Click -= myEvent;//unsuscribe 

private void MyMethod(MyParameterType myParameter) 
{ 
//Do something 
} 
Các vấn đề liên quan