WinForms में ActiveForm प्रॉपर्टी जैसे कुछ का उपयोग करके, मैं सी # में WPF अनुप्रयोग की सक्रिय विंडो को कैसे देख सकता हूं?WPF में सक्रिय विंडो का संदर्भ लें?
उत्तर
एक संभव तरीका आवेदन में खुले विंडो की सूची स्कैन और जाँच उनमें से एक IsActive = true
है जो करने के लिए होगा:
Application.Current.Windows.OfType<Window>().SingleOrDefault(x => x.IsActive);
सुनिश्चित नहीं हैं कि अगर वहाँ एक से अधिक सक्रिय विंडो अगर हो सकता है, उदाहरण के लिए , एक मॉडल संवाद दिखा रहा है, इस मामले में, संवाद के मालिक और संवाद स्वयं सक्रिय हो सकता है।
PInvoke का उपयोग करके ऐसा करने का बेहतर तरीका है। Aviads जवाब हर समय काम नहीं कर रहा है (संवाद के साथ कुछ किनारे के मामले हैं)।
IntPtr active = GetActiveWindow();
ActiveWindow = Application.Current.Windows.OfType<Window>()
.SingleOrDefault(window => new WindowInteropHelper(window).Handle == active);
एक आयात के बाद पहले शामिल करना चाहिए:
[DllImport("user32.dll")]
static extern IntPtr GetActiveWindow();
हेहे। मुझे यह खोजने के लिए मुझे कुछ घंटे लगे।मैंने वास्तव में आपके जैसा ही लिखा और इसे साझा करने के लिए यहां आ गया, लेकिन आप पहले थे, इसलिए मेरा वोट यहां है: पी –
क्या आप किनारे के मामलों के बारे में विस्तार से बता सकते हैं? – nchaud
@nchaud मैं AvalonDock का उपयोग कर रहा हूं जो आपको मुख्य विंडो से और एक नई विंडो में वर्कस्पेस खींचने की अनुमति देता है। हालांकि, इन खिड़कियों को 'IsActive' भी चिह्नित किया गया है। दूसरे समाधान का उपयोग करके अपवाद फेंक दिया गया ('सिंगलऑर्डफॉल्ट 'फेंकता है यदि भविष्य में एक से अधिक मिलान हो रहे हैं) या' फर्स्टऑर्ड डीफॉल्ट 'का उपयोग करते समय मुझे वास्तविक सक्रिय विंडो नहीं दी – clcto
मैं इस तरह के साथ समस्या है "। Application.Current.Windows.OfType() SingleOrDefault (x => x.IsActive);" विशेष क्योंकि मैं मुख्य विंडो के साथ एक अनुप्रयोग बना रहा था, तब मुख्य विंडो का चयन होने पर मुझे समस्याएं थीं। मैं इसे इस बनाने हल:
कुछ आधार वर्ग में या App.xaml.cs बनाने यह:
public static Window ActivatedWindow {get;set;}
फिर अपने आधार वर्ग पाने विंडो या अपने विंडो के सक्रिय घटना के सभी में डाल:
पहले विकल्प - व्यक्तिगत खिड़की बेस कक्षा:
public class MetroToolWindowBase
{
public MetroToolWindowBase()
{
Activated += new EventHandler(MakeActive);
}
private void MakeActive(object sender, EventArgs e)
{
App.ActivatedWindow= this;
}
}
दूसरा Windows के सक्रिय घटना में विकल्प:
+०१२३५१६४१०private void XWindow_Activated(object sender,EventArgs e)
{
App.ActivatedWindow= this;
}
मुझे पता है कि यह एक छोटा सा सवाल है लेकिन मुझे लगता है कि मेरा जवाब किसी की मदद कर सकता है।
मेरे समस्या यह थी: मैं एक WPF MVVM आवेदन यानी दूसरा दृश्य मॉडल थी और मैं दूसरे दृश्य में मेरी MainWindow
उदाहरण पाने के लिए की जरूरत है,, visible
को शीर्षक पट्टी बटन की दृश्यता सेट करने के लिए।
MainWindow window = (MyApp.MainWindow)App.Current.MainWindow;
window.btnSearch.Visibility = System.Windows.Visibility.Visible;
आशा इस किसी की मदद करेंगे:
यह मेरा समाधान है।
- 1. एक्सएएमएल में छवि संसाधनों का संदर्भ कैसे लें?
- 2. WPF विंडो
- 3. किसी अन्य लाइब्रेरी में एक अलग असेंबली में परिभाषित WPF शैली कुंजी का संदर्भ कैसे लें
- 4. वीबीएनईटी: वीबी.नेट मॉड्यूल का संदर्भ कैसे लें?
- 5. आरंभिक प्रतिबद्धता का संदर्भ कैसे लें?
- 6. WPF विंडो
- 7. WPF विंडो
- 8. विंडो WPF
- 9. WPF विंडो
- 10. फोरग्राउंड बनाम सक्रिय विंडो
- 11. अंतिम सक्रिय विंडो प्राप्त करें: पिछली सक्रिय विंडो प्राप्त करें
- 12. सक्रिय विंडो सेट करें
- 13. विंडो सक्रिय करें
- 14. सक्रिय विंडो का नाम प्राप्त करना
- 15. WPF विंडो में पारदर्शी पीएनजी
- 16. CreateProcessAsUser सक्रिय सत्र में विंडो बनाना
- 17. स्फिंक्स ऑटोमोबाइल: समान मॉड्यूल में कक्षाओं का संदर्भ कैसे लें?
- 18. आकर्षित करने में रंग विशेषता का संदर्भ कैसे लें?
- 19. web.config में एक डीएलएल का संदर्भ कैसे लें?
- 20. दस्तावेज़ीकरण में उदाहरण विधियों का संदर्भ कैसे लें?
- 21. जेएसएफ एप्लिकेशन में फ़ाइल संसाधन का संदर्भ कैसे लें
- 22. Google Chrome में DOMWindow प्रकार का संदर्भ कैसे लें?
- 23. ग्रहण m2e में, वर्कस्पेस प्रोजेक्ट का संदर्भ कैसे लें?
- 24. कस्टम थीम में शैली का संदर्भ कैसे लें
- 25. शैली में थीम विशेषता का संदर्भ कैसे लें?
- 26. रूबी में स्थानीय मणि का संदर्भ कैसे लें?
- 27. उद्देश्य-सी में प्रोटोकॉल का संदर्भ कैसे लें?
- 28. Mongoid में एक एम्बेडेड दस्तावेज़ का संदर्भ कैसे लें?
- 29. एनपीएम मॉड्यूल में स्थानीय फ़ाइलों का संदर्भ कैसे लें?
- 30. java.util.Properties में किसी अन्य संपत्ति का संदर्भ कैसे लें?
मेरे पुराने उत्तर को दोबारा देखकर, '() 'के बजाय' ऑफ टाइप ()' ऑपरेटर का उपयोग करना बेहतर हो सकता है ... –
कमाल! यह मुझे खिड़की के संदर्भ को पास करने से रोकता है, जो मेरी डेटा संरचना को UI संदर्भों से मुक्त रखता है। धन्यवाद! – BrokeMyLegBiking
इसे और अधिक मजबूत बनाने के लिए, आप 'सिंगलऑर्डफॉल्ट' के बजाय 'फर्स्टऑर्डडिफॉल्ट' का भी उपयोग कर सकते हैं जो एकाधिक मिलान वाले आइटम होने पर अपवाद फेंकता है। इसके अलावा यह थोड़ा तेज़ होना चाहिए क्योंकि यह पहले परिणाम को स्वीकार करता है और यह जांचने की आवश्यकता नहीं है कि यह केवल एक ही है। – ygoe