मेरे पास WPF चेकबॉक्स का एक समूह है जिसमें एक चेक किए गए ईवेंट हैंडलर हैं जो उपयोगकर्ता को उनमें से किसी एक पर क्लिक करते समय कुछ तर्कों को संभालता है। हालांकि, मेरे पास "सभी साफ़ करें" बटन भी है, जब क्लिक किया गया, तो सभी चेकबॉक्स साफ़ हो जाएंगे। यदि उपयोगकर्ता "सभी साफ़ करें" बटन पर क्लिक करता है, तो मैं नहीं चाहता कि चेकबॉक्स उनके चेक किए गए ईवेंट को आग लगाना चाहें। क्या इसे करने का कोई तरीका है?क्या डब्ल्यूपीएफ चेकबॉक्स को अपने चेक किए गए ईवेंट को फायर करने से रोकने का कोई तरीका है?
उत्तर
सभी बटन के ईवेंट हैंडलर साफ़ में की शुरुआत में ईवेंट हैंडलर निकालें और फिर सभी को साफ़ करें बटन के ईवेंट हैंडलर के अंत में ईवेंट हैंडलर पुन: जोड़ें।
XAML
<Window x:Class="UncheckedTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<CheckBox Height="16" Margin="22,30,136,0" Name="checkBox1" VerticalAlignment="Top"
Unchecked="checkBox1_Unchecked">CheckBox 1</CheckBox>
<CheckBox Height="16" Margin="22,76,136,0" Name="checkBox2" VerticalAlignment="Top"
Unchecked="checkBox2_Unchecked">CheckBox 2</CheckBox>
<CheckBox Margin="22,0,136,121" Name="checkBox3" Height="16" VerticalAlignment="Bottom"
Unchecked="checkBox3_Unchecked">CheckBox 3</CheckBox>
<Button HorizontalAlignment="Right" Margin="0,118,37,121" Name="button1" Width="87"
Click="button1_Click">Uncheck All</Button>
<TextBox Height="74" Margin="22,0,20,13" Name="textBox1" VerticalAlignment="Bottom"
TextWrapping="Wrap" VerticalScrollBarVisibility="Visible" />
</Grid>
</Window>
कोड के पीछे
using System;
using System.Windows;
namespace UncheckedTest
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
private int i = 1;
public Window1()
{
InitializeComponent();
}
void checkBox3_Unchecked(object sender, RoutedEventArgs e)
{
textBox1.Text = i++.ToString() + ". Checkbox 3 Unchecked." + Environment.NewLine + textBox1.Text;
}
void checkBox2_Unchecked(object sender, RoutedEventArgs e)
{
textBox1.Text = i++.ToString() + ". Checkbox 2 Unchecked." + Environment.NewLine + textBox1.Text;
}
void checkBox1_Unchecked(object sender, RoutedEventArgs e)
{
textBox1.Text = i++.ToString() + ". Checkbox 1 Unchecked." + Environment.NewLine + textBox1.Text;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
checkBox1.Unchecked -= checkBox1_Unchecked;
checkBox2.Unchecked -= checkBox2_Unchecked;
checkBox3.Unchecked -= checkBox3_Unchecked;
checkBox1.IsChecked = false;
checkBox2.IsChecked = false;
checkBox3.IsChecked = false;
checkBox1.Unchecked += checkBox1_Unchecked;
checkBox2.Unchecked += checkBox2_Unchecked;
checkBox3.Unchecked += checkBox3_Unchecked;
}
}
}
धन्यवाद, यह समाधान थोड़ा हैक-आश लगता है लेकिन शायद जाने का सबसे अच्छा तरीका है। जेफ द्वारा प्रदान किया गया एक और व्यवहार्य समाधान है, एक वैरिएबल बनाने के लिए जो यह देखने के लिए चेक किया गया है कि इसे 'चेक किए गए' तर्क को संसाधित करना चाहिए या नहीं। –
घटना को अक्षम करना आदर्श होगा लेकिन मुझे नहीं पता कि यह कैसे किया जाएगा।
हालांकि "सभी साफ़ करें" बटन दबाया गया था या नहीं, तो ट्रैक रखने के लिए बूलियन जोड़ने के लिए उतना ही आसान होगा। फिर केवल अनचेक कोड करें यदि यह बटन के माध्यम से अनचेक नहीं किया गया था।
private bool clearAllClicked = false;
private void button_Click(object sender, RoutedEventArgs e)
{
clearAllClicked = true;
checkbox.IsChecked = false;
clearAllClicked = false;
}
private void checkbox_Unchecked(object sender, RoutedEventArgs e)
{
if (!clearAllClicked)
{
//do stuff
}
}
यह एक व्यवहार्य समाधान है, लेकिन यदि संभव हो तो मैं एक और चर बनाने के खिलाफ रोकना चाहता हूं। –
आप के बजाय 'की जांच की गई' का 'पर क्लिक करें' घटना का उपयोग कर सकते या 'अचिह्नित:
यहाँ एक गंदा नमूना है ' आयोजन।
'क्लिक' यह सुनिश्चित करेगा कि राज्य परिवर्तन उपयोगकर्ता इनपुट से आएगा (उदाहरण के लिए माउस बटन या स्पेस बार के माध्यम से)।
और cb.IsChecked = value
जैसे ऑपरेशन 'क्लिक' ईवेंट को आग नहीं लगाएंगे।
लगभग इसके बारे में भूल गए! यह वास्तव में मेरी समस्या हल हो सकता है, धन्यवाद! – Enrico
बस एक चेतावनी, यदि स्पेस-बार का उपयोग किया जाता है तो यह ट्रिगर नहीं होता है जो चेकबॉक्स इनपुट को टॉगल भी कर सकता है। –
- 1. Jquery Trigger चेकबॉक्स: क्लिक किए गए ईवेंट से जुड़ा हुआ फ़ंक्शन चेक किए गए गुण
- 2. कोई आइटम चेक किए गए ईवेंट में चेक किए गए ईवेंट में?
- 3. चेक किए गए चेंज किए गए ईवेंट में समस्या
- 4. एंड्रॉइड: चेकबॉक्स चेक किए गए चेकबॉक्स मान
- 5. परिवर्तन ईवेंट को फायर किए बिना आप चेकबॉक्स कैसे चेक करते हैं?
- 6. मैं अपने jQuery चेक/अनचेक फ़ंक्शन को ओवरराइड करने से डिफ़ॉल्ट चेकबॉक्स ईवेंट को कैसे रोकूं?
- 7. जेड चेकबॉक्स चेक किए गए विशेषता को सशर्त (यदि)
- 8. क्या sys.exit() से पकड़े गए SystemExit अपवाद को पकड़े जाने से रोकने का कोई तरीका है?
- 9. क्या AlertDialog को अमान्य इनपुट के साथ बंद करने से रोकने का कोई तरीका है?
- 10. प्रोग्राम किए गए चेक किए गए राज्य के परिवर्तन के जवाब में चेकबॉक्स परिवर्तन ईवेंट की आवश्यकता है
- 11. क्या एक्सकोड को इंटरनेट से डाउनलोड करने से रोकने का कोई तरीका है?
- 12. एंड्रॉइड चेकबॉक्स चेक इवेंट पर कोई ईवेंट कैसे प्राप्त करें?
- 13. क्या कैलेयर छाया को आसन्न परतों को ओवरलैप करने से रोकने का कोई तरीका है?
- 14. चेकबॉक्स चेक किए गए चेकबॉक्स के आधार पर टेक्स्टबॉक्स को अक्षम कैसे करें
- 15. क्या CABasicAnimation को रोकने का कोई तरीका है?
- 16. फायरिंग को कैसे रोकें चेक किए गए चेंज किए गए ईवेंट को प्रोग्रामेटिक रूप से नियंत्रित करते समय?
- 17. क्या सोफेड इंडेक्सर प्रक्रिया को रोकने का कोई तरीका है?
- 18. चुपचाप विफल होने से जावास्क्रिप्ट को रोकने का कोई तरीका?
- 19. चेक किए गए मानों की सूची में चेकबॉक्स की सूची को बाध्य करने का सबसे आसान तरीका
- 20. सभी चेक किए गए चेकबॉक्स कैसे प्राप्त करें
- 21. क्या jQuery FullCalendar में ओवरलैपिंग ईवेंट को रोकने का कोई तरीका है?
- 22. अक्षम चेक किए गए चेकबॉक्स को अनचेक के रूप में दिखाया गया है - एएसपी.नेट
- 23. चेकबॉक्स डेटा बाइंडिंग - चेक किए गए बनाम चेकस्टेट
- 24. क्या डेटाग्रिड व्यू चेकबॉक्स सेल को छोटा करने का कोई तरीका है?
- 25. एचटीएमएल 5 में चेकबॉक्स को चेक और अनचेक करने का सही तरीका क्या है?
- 26. क्यूटी चेकबॉक्स/टूलबटन कस्टम/विशिष्ट चेक/अनचेक किए गए आइकन
- 27. क्या TabControl.Items.CurrentChanging को रद्द करने का कोई तरीका है?
- 28. मॉकिटो: क्या स्टब किए गए विधि के वापसी मूल्य को कैप्चर करने का कोई तरीका है?
- 29. क्या AJAX पृष्ठों को ब्राउज़र में अकेले देखने से रोकने का कोई तरीका है?
- 30. कैसे गणना करें कि कितने चेकबॉक्स चेक किए गए हैं
मेरा मानना है कि आपका मतलब अनचेक घटना सही है? –
सही खेद है, अनचेक घटना। –