【问题标题】:c# Revert on checkbox uncheckedc#Revert on checkbox unchecked
【发布时间】:2015-01-25 16:12:47
【问题描述】:

我的目标是当复选框未被选中时,让 label1 在复选框被选中之前返回它的值。

 private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        {
            if
              (checkBox1.Checked)
                label1.Text = textBox1.Text + label1.Text;

            else

                label1.Text = label1.Text; //return to previous value?
        }
    }

上面提到的方式,label1 '粘'到复选框未选中时的值。

我尝试使用 label1.Refresh 但它不起作用。

有没有更有效的方法来获得我正在寻找的结果?

【问题讨论】:

  • 这里丢失标签label1.Text = textBox1.Text + label1.Text;的默认值。您应该将其保存在实例变量中以恢复它。
  • label1.Text = label1.Text; 什么都不做,因为标签不知道它曾经是什么——你改变了它。创建一个字符串 var 来保存要恢复到的值
  • 您的项目是 WinForms、WPF 还是 Web,还是其他? Giorgos Betsos、Raging Bull 和 Jakob Olsen 提供了一些解决方案,但它们都假设了一个您没有指定的特定环境。

标签: c# checkbox return unchecked


【解决方案1】:

在更新之前保存值。然后在未选中时还原。

private string _lastValue = string.Empty;
    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        {
            if
                (checkBox1.Checked)
            {
                _lastValue = label1.Text;
                label1.Text = textBox1.Text + label1.Text;
            }

            else

                label1.Text = _lastValue;
        }
    }

【讨论】:

    【解决方案2】:

    只需使用一个变量来存储标签的先前值。

    string DefaultLabelValue="";
    
    private void Form1_Load(object sender, EventArgs e)
    {
        DefaultLabelValue=lable1.Text;
    }
    
    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        if (checkBox1.Checked)
            label1.Text = textBox1.Text + label1.Text;
        else
            label1.Text = DefautLabelValue;
    }
    

    【讨论】:

    • label1 并不总是相同的,所以我不能只设置一个预定义的“某物”?
    • @EyeSeeSharp:如果是这样,您可以在Form_Load 事件中设置它。请参阅我的答案中的编辑。如果不是你要找的,请多解释一下。
    • label1 是从单击按钮时获取的在线字符串(可以更改)派生的。如果我创建 'string DefaultLabelValue = "";'它只是增加了那个价值。当复选框未选中时,我需要以某种方式保存它以恢复它。
    • @EyeSeeSharp:你能举个例子吗?
    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多