【问题标题】:Two Radio buttons with different messages when checked选中时带有不同消息的两个单选按钮
【发布时间】:2017-03-16 23:51:38
【问题描述】:

我需要使用两个单选按钮;一个是开启的,另一个是关闭的。

当我们单击任何单选按钮时,应用程序会向我显示两条消息!如何让它只显示单击单选按钮的消息?

    private void rB_OFF_CheckedChanged(object sender,EventArgs e)
    {
    MessageBox.Show("You clicked OFF");
    }

    private void rB_ON_CheckedChanged(object sender,EventArgs e)
    {
    MessageBox.Show("You clicked ON");
    }

【问题讨论】:

    标签: c# radio-button messagebox


    【解决方案1】:

    CheckChanged 事件

    在 Checked 属性的值更改时发生。

    这意味着单选按钮要么从选中 -> 未选中,反之亦然。在您的处理程序中,您需要检查sender 是否为Checked

    private void rB_ON_CheckedChanged(object sender,EventArgs e)
    {
        var rb = (RadioButton)sender;
    
        if (rb.Checked) {
            MessageBox.Show("You clicked ON");
        }
    }
    

    【讨论】:

    • 谢谢,这是因为radioButton 是布尔值好吗?同一范围内,只能勾选一项;如何创建条件以便仅单击按钮来显示消息?谢谢你,奥卡西。
    • 不,是RadioButton。它有一个bool Checked 属性。
    • 谢谢;现在当我启动应用程序时,会显示单选按钮默认的消息。启动应用时如何不显示消息?
    • @OcacciPontes 在构造函数中的InitializeComponent 方法之后附加处理程序。
    • 马克·霍尔,怎么做?谢谢你,ocaccy。
    【解决方案2】:

    最好为所有单选按钮设置一个事件 所有单选按钮的相同事件

    更多详情在这里MSDN

     this.radioButton2.CheckedChanged += new EventHandler(radioButton_CheckedChanged);
        this.radioButton1.CheckedChanged += new EventHandler(radioButton_CheckedChanged);
    
    
        void radioButton_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rb = sender as RadioButton;
    
            if (rb == null)
            {
                MessageBox.Show("Sender is not a RadioButton");
                return;
            }
    
            // Ensure that the RadioButton.Checked property 
            // changed to true. 
            if (rb.Checked)
            {
                // Keep track of the selected RadioButton by saving a reference 
                // to it.
                selectedrb = rb;
                MessageBox.Show(selectedrb.Text);
            }
        }
    

    【讨论】:

      【解决方案3】:

      因为radioButton 变成truefalse,它只会触发checkedChanged 事件,所以你需要这样做。

      private void rB_OFF_CheckedChanged(object sender,EventArgs e)
          {
            if (rB_OFF.Checked == true)
            {
              MessageBox.Show("You clicked OFF");
            }
          }
      
          private void rB_ON_CheckedChanged(object sender,EventArgs e)
          {
            if (rB_ON.Checked == true)
            {
              MessageBox.Show("You clicked ON");
            }
          }
      

      【讨论】:

        【解决方案4】:

        这是因为当您选中一个时,另一个未选中,并且您在 CheckedChanged 上有事件处理程序。因此,请检查更改并在两个控件上触发事件。

        改为从object sender 获取更多信息。 Sender 将是触发此事件的 RadioButton。将其转换为 RadioButton 并使用其 Checked 属性。

            private void rB_OFF_CheckedChanged(object sender, EventArgs e)
            {
                RadioButton rb = (RadioButton)sender;
        
                if (rb.Checked)
                {
                    MessageBox.Show("You clicked OFF");
                }            
            }
        
            private void rB_ON_CheckedChanged(object sender, EventArgs e)
            {
                RadioButton rb = (RadioButton)sender;
        
                if (rb.Checked)
                {
                    MessageBox.Show("You clicked ON");
                }            
            }
        

        【讨论】:

          猜你喜欢
          • 2015-06-13
          • 1970-01-01
          • 1970-01-01
          • 2019-12-08
          • 1970-01-01
          • 1970-01-01
          • 2019-04-04
          • 2013-10-07
          • 2012-09-22
          相关资源
          最近更新 更多