2010-07-06 19 views
5

मेरे पास एक विंडोज फॉर्म लिंक लेबल है, "रीफ्रेश करें", जो डिस्प्ले को रीफ्रेश करता है।उपयोगकर्ता इनपुट के बिना "क्लिक" ईवेंट को ट्रिगर करना

मेरे कोड के दूसरे भाग में, एक अलग विंडोज़ फॉर्म का हिस्सा, मेरे पास एक संवाद है जो पहले स्थान पर प्रदर्शित डेटा को बदलता है। इस अन्य कोड को निष्पादित करने के बाद, "ताज़ा करें" दबाकर डेटा को सही तरीके से अपडेट किया जाता है।

क्या डायलॉग मेनू को डेटा को बदलने के बाद "रीफ्रेश" लिंक लेबल पर "क्लिक" करने का एक आसान तरीका है?

विजुअल स्टूडियो 2008

उत्तर

9

बटन के लिए बहुत आसान है का उपयोग करना, बस का उपयोग करें:

button.PerformClick() 

वैसे भी, मैं की तरह कुछ करने के लिए पसंद करते हैं:

private void button_Click(object sender, EventArgs e) 
{ 
    DoRefresh(); 
} 

public void DoRefresh() 
{ 
    // refreshing code 
} 

और DoRefresh() फोन PerformClick()


के बजाय

संपादित करें (ओपी परिवर्तन के अनुसार):

तुम अब भी मेरी दूसरी समाधान का उपयोग कर सकते हैं, कि अब तक बेहतर है:

private void linkLabel_Click(object sender, EventArgs e) 
{ 
    DoRefresh(); 
} 

public void DoRefresh() 
{ 
    // refreshing code 
} 

और प्रपत्र के बाहर से, आप DoRefresh() कॉल कर सकते हैं के रूप में यह है चिह्नित चिह्नित

लेकिन, यदि आप वास्तव में प्रोग्राम के रूप में एक क्लिक उत्पन्न करने के लिए की जरूरत है, बस Yuriy-Faktorovich's Answer

+0

+1 PerformClick करने के लिए वैकल्पिक के लिए refrech करने के लिए एक विधि का उपयोग कर सकते हैं। PerformClick उत्पादन कोड में एक हैकिश दृष्टिकोण है। मुझे लगता है कि यह आम तौर पर परीक्षण तक ही सीमित होना चाहिए। –

+0

मेरी गलती; मुझे लगता है कि यह एक बटन था, लेकिन यह वास्तव में एक लिंक लेबल है जो एक बटन की तरह काम करता है। क्या उनके लिए एक समान विधि है? –

+0

http://msdn.microsoft.com/en-us/library/bb337532.aspx, लेकिन जैसा कि आपने कहा था, एक अलग विधि बेहतर है। –

5

को देखो आप PerformClick method कह सकते हैं। लेकिन आम तौर पर बटन लिखने के लिए बेहतर होता है कि आपके द्वारा लिखे गए रीफ्रेश विधि को कॉल करें। और मेनू उस विधि को भी कॉल करता है। अन्यथा आपका मेनू वहां मौजूद बटन पर निर्भर करता है।

संपादित करें:

एक LinkLabel स्पष्ट IButtonControl लागू करता है। तो अगर आप इस्तेमाल कर सकते हैं:

((IButtonControl)button).PerformClick();

0

आप प्रदर्शन, bouton_click और dialogBox कॉल इस विधि

public void refrechDate() 
{ 
} 


private void button_click(...) 
{ 
    refrechData(); 
} 
0
private void MyMethod() 
{ 
    // ... 

    // calling refresh 
    this.button1_Click(this.button1, EventArgs.Empty); 

    // ... 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    // refresh code 
} 
संबंधित मुद्दे