2010-04-07 6 views
6

पर एक ईवेंट को बढ़ाने पर मैं उपयोगकर्ता नियंत्रण के बारे में जानने की कोशिश कर रहा हूं। मैंने एक उपयोगकर्ता नियंत्रण बनाया जिसमें टेक्स्टबॉक्स और एक बटन है। मैं क्या करने में सक्षम होना चाहता हूं जब मैं उपयोगकर्ता नियंत्रण में बटन क्लिक करता हूं, एएसपीएक्स पेज में एक लेबल को पॉप्युलेट करता हूं। मैं समझता हूं कि मेरे पास उस पृष्ठ पर एक बटन हो सकता है जो उस जानकारी को प्राप्त करने के लिए उपयोगकर्ता नियंत्रण पर कुछ गुणों का उपयोग करता है .. लेकिन मैं जानना चाहता हूं कि उपयोगकर्ता को नियंत्रित करने वाले बटन के साथ इसे कैसे करना है .. इसका कारण है बटन सिर्फ एक उदाहरण है .. एक सीखने का उपकरण। अगर मैं यह काम कर सकता हूं, तो शायद मैं उपयोगकर्ता नियंत्रण में चीज डाल रहा हूं जिसके लिए इस तरह की गुजरने वाली जानकारी की आवश्यकता हो सकती है। वैसे भी .. मुझे कुछ सी # उदाहरण मिले हैं जिन्हें मैंने वीबी के रूप में काम करने की कोशिश की .. लेकिन एक बार प्रतिनिधियों और घटनाओं में शामिल होना शुरू हो गया .. अच्छा .. यह मुझे इस पोस्ट में बदल गया।asp.net vb उपयोगकर्ता नियंत्रण कॉलिंग पेज

वैसे भी .. उम्मीद है कि कोई हाथ उधार दे सकता है।

उत्तर

17

देखें कि this tutorial सहायता कर सकता है या नहीं। ऐसा करने का सबसे अच्छा तरीका निश्चित रूप से एक घटना को तार करना है, जो आपको लगता है कि लगभग उतना कठिन नहीं है। मूल बातें कर रहे हैं:

1. अपने नियंत्रण वर्ग में एक घटना को परिभाषित करें:

Public Event MyEvent as System.EventHandler

2. बढ़ाएं एक उप या अपने नियंत्रण वर्ग के समारोह में घटना:

RaiseEvent MyEvent(Me, New EventArgs())

3. उस ईवेंट पर ईवेंट को संभालें जिसमें आपका नियंत्रण है:

Protected Sub MyControl_MyEvent(ByVal sender As Object, ByVal e As EventArgs) Handles MyControl.MyEvent 
    'Do stuff here 
End Sub 
+0

जानकारी के लिए धन्यवाद .. सोच रहा था .. क्योंकि आपके पास ऐसा करने का इतना अच्छा और सरल तरीका है .. आप घटना में वापस जानकारी कैसे पास करते हैं .. या यह है कि जब ईवेंट निकाल दिया जाता है (आपका 'डू यहां सामान) मैं उपयोगकर्ता नियंत्रण – jvcoach23

+0

पर सेट की गई प्रस्तुति से मूल्य प्राप्त करूँगा यदि आप घटना में जानकारी वापस पास करना चाहते हैं, तो आपको 'नया इवेंटअर्स ") के अलावा कुछ और वापस करने के लिए अपना" RaiseEvent "कोड बदलना चाहिए। '।इसे सरल रखने के लिए, आप इस तरह की एक स्ट्रिंग भी पारित कर सकते हैं: 'RaiseEvent MyEvent (Me, MyString)', और उसके बाद 'ByVal s As String' जैसे कुछ होने के लिए 'MyControl_MyEvent' उप के दूसरे पैरामीटर को बदलें' 'ByVal ई के रूप में EventArgs' के बजाय। आप जो कुछ भी चाहते हैं उसे पारित कर सकते हैं। मैंने अभी EventArgs का उपयोग किया क्योंकि यह ऐसा करने का एक आम तरीका है (अधिकांश लोग अपनी खुद की कक्षा का उपयोग करते हैं जो EventArgs से प्राप्त होता है)। – tloflin

+0

महान .. प्रतिक्रियाओं के लिए धन्यवाद ... – jvcoach23

1

समस्या यह है कि यदि आप उपयोगकर्ता के मूल पृष्ठ पर उपयोगकर्ता नियंत्रण निर्भर करते हैं, तो यह अब पोर्टेबल नहीं है, और आपने इसे पहले स्थान पर उपयोगकर्ता नियंत्रण में लाने के उद्देश्य को हरा दिया है।

शायद यही कारण है कि आप प्रतिनिधियों में क्यों चल रहे हैं और किसी भी उदाहरण में क्या नहीं है - लोग सीधे उपयोगकर्ता को लेबल को सेट करने के बजाय, उपयोगकर्ता नियंत्रण को पारित करने की अनुमति देकर मूल पृष्ठ पर निर्भरता को हटाने की कोशिश कर रहे हैं अभिभावक पृष्ठ।

यदि यह केवल अभ्यास के लिए है, तो आप दूसरे पृष्ठ की बजाय उपयोगकर्ता नियंत्रण में एक लेबल सेट करने के लिए मूल पृष्ठ पर एक बटन दबाकर बेहतर होगा। जिस तरह से आप इसे कर रहे हैं अब एक अच्छा डिजाइन नहीं है और वास्तविक अनुप्रयोगों से बचा जाना चाहिए।

+0

एक बात जो मैं उपयोगकर्ता नियंत्रण के बारे में सोच रहा था .. एक बहु कॉम्बो बॉक्स है जो ऑटोसॉज़ करता है जो कई स्थानों पर उपयोग किया जाएगा .. उपयोगकर्ता द्वारा चुनी गई अंतिम वस्तु वह मान है जो मैं चाहता हूं। यह काफी शामिल है और उस कोड या अव्यवस्था को कॉपी और पेस्ट नहीं करना चाहता था। तो सोच रहा था कि उपयोगकर्ता नियंत्रण अच्छा काम करेगा। बात यह है कि, एक बार जब मूल्य चुना जाता है, तो मैं उम्मीद कर रहा था कि उपयोगकर्ता को पृष्ठ पर वापस तह मूल्य प्राप्त करने के लिए बटन क्लिक करने की आवश्यकता नहीं है ... आप किस बारे में बात कर रहे हैं .. आप किस दृष्टिकोण से लेंगे। धन्यवाद – jvcoach23

2

मुझे विश्वास है कि आप क्या करना चाहते हैं यह है कि आपका UserControl एक ईवेंट उठाए। This MSDN article explains how to raise events और वीबी उदाहरण हैं। फिर आपका पृष्ठ इस घटना की सदस्यता ले सकता है कि आपका UserControl उठाता है और सेट करने के लिए आपको जो भी मूल्य चाहिए, सेट करें। सार्वजनिक गुणों के रूप में अपने कुछ उपयोगकर्ता नियंत्रण फ़ील्ड (यानी टेक्स्टबॉक्स, आदि) का खुलासा करना सबसे अच्छा हो सकता है ताकि वे सब्स्क्राइब किए गए नियंत्रण से पहुंच सकें।