2015-01-25 3 views
0

Моя цель - установить флажок, чтобы метка 1 не возвращалась к ее значению до того, как был установлен флажок.C# Revert on checkbox unchecked

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, но это не сработало.

Есть ли более эффективный способ получить результат, который я ищу?

+0

Здесь вы теряете значение по умолчанию label 'label1.Text = textBox1.Text + label1.Text;'. Вы должны сохранить его в переменной экземпляра, чтобы восстановить его. –

+0

'label1.Text = label1.Text;' ничего не делает, потому что метка не знает, чем она была раньше, - вы ее изменили. создайте строку var, чтобы сохранить значение для возврата к – Plutonix

+1

Является ли ваш проект WinForms, WPF или Web или что еще? Giorgos Betsos, Raging Bull и Jakob Olsen предоставили некоторые решения, но все они предполагают определенную среду, которую вы не указали. –

ответ

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; 
     } 
    } 
0

Просто используйте переменную, чтобы сохранить предыдущее значение метки.

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; 
} 
+0

label1 не всегда будет одинаковым, поэтому я не могу просто задать предопределенное «что-то»? – EyeSeeSharp

+0

@EyeSeeSharp: Если это так, вы можете установить его в событии Form_Load. См. Редактирование в моем ответе. Если это не то, что вы ищете, пожалуйста, объясните немного больше. –

+0

label1 получен из сетевой строки (которая может измениться), полученной на кнопке buttonclick. Если я создаю 'string DefaultLabelValue = "";' он просто добавляет в эту ценность. Мне нужно как-то сохранить его, чтобы вернуться к нему, когда флажок снят. – EyeSeeSharp