मुझे उपरोक्त @ स्पेंडर के उदाहरण को विशेष रूप से: Object.assignHandler((sender) => evHandler(sender,someData));
के साथ पता लगाने में कठिन समय था क्योंकि शाब्दिक अर्थ में Object.assignHandler
जैसी कोई चीज़ नहीं है। तो मैंने थोड़ी अधिक गुगलिंग की और this example पाया।
स्निप
सामान्य दृष्टिकोण एक ईवेंट हैंडलर अपने संशोधित है कि के साथ एक अनाम विधि का उपयोग करने के लिए है: पीटर Duniho द्वारा जवाब एक ही है कि मेरे सिर में क्लिक किया है (यह मेरा काम नहीं है) था हस्ताक्षर। उदाहरण के लिए:
void Onbutton_click(object sender, EventArgs e, int i) { ... }
button.Click += delegate(object sender, EventArgs e)
{ Onbutton_click(sender, e, 172); };
बेशक, आप 172 में गुजरती हैं, या तीसरे पैरामीटर किसी पूर्णांक बनाने के लिए नहीं है। :)
/
कटाव कि उदाहरण मैं एक Timer.Elapsed
घटना का उपयोग कर लैम्ब्डा अंकन करने के लिए ComboBoxItem
वस्तुओं दो कस्टम में पारित करने में सक्षम था का उपयोग करना:
simulatorTimer.Elapsed +=
(sender, e) => onTimedEvent(sender, e,
(ComboBoxItem) cbPressureSetting.SelectedItem,
(ComboBoxItem) cbTemperatureSetting.SelectedItem);
और फिर इसे का हैंडलर में:
static void onTimedEvent(object sender, EventArgs e, ComboBoxItem pressure, ComboBoxItem temperature)
{
Console.WriteLine("Requested pressure: {0} PSIA\nRequested temperature: {1}° C", pressure, temperature);
}
यह ऊपर दिए गए उदाहरणों से कोई नया कोड नहीं है, लेकिन यह एच प्रदर्शित करता है उन्हें समझने के लिए ओउ। उम्मीद है कि मेरे जैसे किसी को यह निर्देशक & उपयोगी लगता है, इसलिए वे इस तरह की अवधारणा को समझने की कोशिश करने में घंटों खर्च नहीं करते हैं।
यह कोड मेरे प्रोजेक्ट में काम करता है (ComboBoxItem
ऑब्जेक्ट्स के साथ गैर-थ्रेड-सुरक्षित अपवाद को छोड़कर, जो कि मुझे विश्वास नहीं है कि उदाहरण कैसे काम करता है)। मैं अब यह पता लगा रहा हूँ।
मैं इस सवाल में एक अधिक मानक समाधान, पहले उत्तर http://stackoverflow.com/questions/14058412/passing-parameter-to-an-event-handler/14058441#14058441 –