加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

有没有办法阻止WPF CheckBox触发其Checked事件?

发布时间:2020-12-14 18:46:10 所属栏目:资源 来源:网络整理
导读:我有一组 WPF CheckBoxes,它们有一个Checked事件处理程序,当用户点击其中一个时,它处理一些逻辑.但是,我还有一个“全部清除”按钮,单击该按钮将清除所有复选框.如果用户点击“全部清除”按钮,我不希望复选框触发他们的Checked事件.有办法做到这一点吗? 解决
我有一组 WPF CheckBoxes,它们有一个Checked事件处理程序,当用户点击其中一个时,它处理一些逻辑.但是,我还有一个“全部清除”按钮,单击该按钮将清除所有复选框.如果用户点击“全部清除”按钮,我不希望复选框触发他们的Checked事件.有办法做到这一点吗?

解决方法

在Clear All按钮的事件处理程序的开头删除事件处理程序,然后在Clear All按钮的事件处理程序的末尾重新添加事件处理程序.

这是一个肮脏的样本:

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,0" Name="checkBox2" VerticalAlignment="Top" 
                  Unchecked="checkBox2_Unchecked">CheckBox 2</CheckBox>
        <CheckBox Margin="22,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,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;
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读