के समूह से खोए गए फोकस का पता लगाएं मैं संपादन योग्य सामग्री वाले कोड का उपयोग कर एक जीयूआई बना रहा हूं। जब उपयोगकर्ता स्थिर प्रदर्शन पर क्लिक करता है तो नियंत्रण उस व्यक्ति के लिए बदल जाता है जो संपादन की अनुमति देता है। कुछ मामलों में, प्रदर्शन नियंत्रण (उदा। Label
) ComboBox
और TextBox
जैसे नियंत्रण समूहों के लिए स्वैप किया गया है।डब्ल्यूपीएफ नियंत्रण
मैं यह जानना चाहता हूं कि संपादन के नियंत्रण के मेरे समूह से फोकस खो गया है ताकि इंटरफ़ेस से इंटरफ़ेस को वापस उस आइटम के प्रदर्शन प्रस्तुति में स्विच किया जा सके।
उदाहरण के लिए, मेरे पास Panel1(Panel2(Button1, Button2), Button3)
जैसे पेड़ में एक जीयूआई हो सकता है और मैं यह जानना चाहता हूं कि Panel2
से फोकस कब खो गया है। मैं निम्नलिखित (एफ # कोड) की कोशिश की:
open System.Windows
let button1 = Controls.Button(Content="1")
let button2 = Controls.Button(Content="2")
let button3 = Controls.Button(Content="3")
[<System.STAThreadAttribute>]
do
let panel1 = Controls.StackPanel()
let panel2 = Controls.StackPanel()
panel2.Children.Add button1 |> ignore
panel2.Children.Add button2 |> ignore
panel1.Children.Add panel2 |> ignore
panel1.Children.Add button3 |> ignore
panel2.LostFocus.Add(fun _ ->
printfn "Panel2 lost focus")
Application().Run(Window(Content=panel1))
|> ignore
panel2.LostFocus
घटना जब button3
अपेक्षा के अनुरूप के बाद button2
क्लिक किया गया था क्लिक किया जाता है, शुरू हो रहा है, क्योंकि ध्यान के रूप में button3
को panel1
से बाहर चले गए। हालांकि, यह भी ट्रिगर होता है जब button2
button1
के बाद क्लिक किया गया था, भले ही panel2
कभी फोकस न हो।
WPF में ध्यान के बारे में MSDN प्रलेखीकरण पढ़ना मैं जोड़ने की कोशिश की:
Input.FocusManager.SetIsFocusScope(panel2, true)
लेकिन यह वास्तव में समस्या बदतर बना दिया! अब panel2.LostFocus
ईवेंट केवल तब ट्रिगर होता है जब panel2
के एक बच्चे से फोकस शिफ्ट होता है और जब panel2
वास्तव में फ़ोकस खो देता है।
मुझे वांछित प्रभाव कैसे प्राप्त करना चाहिए?