मेरे पास एक बहुत ही रोचक कार्य है जिसके लिए मुझे सहायता चाहिए। विवरण निम्नानुसार है:मैं उपयोगकर्ता नियंत्रण से कस्टम ईवेंट कैसे फायर करूं?
मेरे पास उपयोगकर्ता नियंत्रण (SomeUserControl) है, जिसका उपयोग मैं मुख्य विंडो में कर रहा हूं। मैं अपने आवेदन को पूरी तरह से SomeUserControl पर लिखता हूं, और मुख्य विंडो कुछ यूज़र कंट्रोल होस्ट कर रही है और कुछ भी नहीं।
अभी मेरे पास एक शटडाउन बटन है (कुछ यूज़र कंट्रोल में), जो मुख्य विंडो को बंद करना है। इसका कारण यह है कि मैं कुछ यूज़र कंट्रोल से एप्लिकेशन को बंद करने के लिए कुछ भी नहीं चाहता, लेकिन कुछ यूज़र कंट्रोल से एक ईवेंट को आग लगाना, और मुख्य विंडो इसे प्राप्त करती है, और मुख्य विंडो कुछ यूज़र नियंत्रण के बजाय एप्लिकेशन बंद कर देगी।
मैं इसे कैसे कर सकता हूं? मैं कस्टम घटनाओं को बनाने और संभालने की अवधारणा से परिचित नहीं हूं, इसलिए यदि कोई इसे शब्दों में और कोड में उदाहरण के रूप में समझा सकता है, तो मैं आपके लिए बहुत आभारी रहूंगा!
संपादित करें: यहां तक कि मेरा कोड अब तक है।
(विंडो में 2)
Public Event CloseApp As EventHandler
Private Sub CancelButton_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles CancelButton.Click
DialogResult = False
RaiseEvent CloseApp(Me, New EventArgs)
End Sub
(मुख्य विंडो में) लोक loginPage न्यू LoginPage
Public Sub New()
InitializeComponent()
AddHandler loginPage.CloseApp, AddressOf Me.ShutDownJobChangeWindow
End Sub
Private Sub ShutDownJobChangeWindow(ByVal sender As Object, ByVal e As EventArgs)
Application.Current.Shutdown()
End Sub
लक्ष्य के रूप में: मैं जब मैं क्लिक करें अनुप्रयोग को बंद करना चाहते हैं विंडो 2 में रद्द करें, लेकिन मैं ऐसा नहीं करना चाहता हूं कि विंडो 2 स्वयं बंद हो जाए, लेकिन मुख्य विंडो में कुछ अधिसूचना भेजकर, और मुख्य खिड़की आवेदन बंद कर देता है।
public delegate void ShutdownEventHandler (object sender, EventArgs data);
public event ShutdownEventHandler Shutdown;
protected void OnShutdown(EventArgs args)
{
if(Shutdown != null)
Shutdown(this, args);
}
तो फिर तुम MainWindow में शटडाउन घटना की सदस्यता, और वहाँ बंद तर्क संभाल:
समाधान AkselK प्रदान किए गए समाधान की तरह, मैं इसे वीबी में कैसे कर सकता हूं? विशेष रूप से अगर (CloseApp! = null) में हिस्सा। क्योंकि इंटेलिजेंस सिर्फ CloseApp नहीं ढूंढ सकता है। - will0809 20 मिनट पहले – will0809
मेरे पास एक ही प्रश्न है लेकिन मैं एमवीवीएम का उपयोग कर रहा हूं, इसलिए मैं इसका उपयोग नहीं कर सकता: - someUserCtrl.CloseApp + = new EventHandler (MyFn); इसके बजाय मैंने एमवीवीएम लाइट लाइब्रेरी का उपयोग किया और मेरे मेनविंडो में एक ईवेंट ट्रिगर जोड़ा क्योंकि i: EventTrigger>< /i :Interaction.Triggers> लेकिन यह काम नहीं करता है। –