2016-11-26 2 views
-1

У меня проблема с моим проектом, у меня есть одна метка и 3 флажка. То, что я хочу, - это если я снял флажок с одного из ярлыков, текст очищается. Проблема моего кода в том, что если я сниму один из флажков, все тексты меток будут очищены.одна метка и 3 флажка на языке C#

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox c = (CheckBox)sender; 
    if(checkBox1.Checked) 
    { 
     string lb1 = label1.Text + c.Text + "@"; 
     lb1 = lb1.Replace("@", Environment.NewLine); 
     label1.Text = lb1; 
    } 
    else 
    { 
     label1.Text = ""; 
    } 
+1

Это действительно трудно понять ваш вопрос. Но в вашем коде написано именно то, что вы описываете: если checkBox1 не отмечен -> текст меток пуст – Allender

+0

Что я хочу, так это если я снял флажок с отмеченного флажка, то только эти флажки не удалены, чтобы удалить не весь текст. У меня есть 3 флажок, каждый из которых содержит 1 текстовое сообщение. Выход идет до метки1.Text –

ответ

1

Прежде всего, вы должны назначить checkBox1_CheckedChanged обработчик событий для каждого CheckedChanged события ваших флажков. Если я правильно понимаю вашу проблему, код должен быть следующим:

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
{ 
    label1.Text = (label1.Tag as string); 
    if (checkBox1.Checked) 
    { 
     label1.Text += checkBox1.Text; 
    } 
    if (checkBox2.Checked) 
    { 
     label1.Text += checkBox2.Text; 
    } 
    if (checkBox3.Checked) 
    { 
     label1.Text += checkBox3.Text; 
    } 
    label1 += Environment.NewLine; 
} 

label1.Tag сохраняет начальное значение вашего label1.Text. Он должен быть назначен где-то в Load случае главного окна:

label1.Tag = label.Text; 
+0

Извините за это. Но у меня такой же результат. То, что я хочу, - это если я снял флажок с одного из отмеченных флажков, то только небезопасные полевые приставки удаляют не весь текст. У меня есть 3 флажок, каждый из которых содержит 1 текстовое сообщение. Выход идет до метки1.Text. –

+0

@navabvillordon Обновлен мой ответ. –

0

Как об этом:

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox c = (CheckBox)sender; 
    if(checkBox1.Checked) 
    { 
     string lb1 = label1.Text + c.Text + "@"; 
     lb1 = lb1.Replace("@", Environment.NewLine); 
     label1.Text = lb1; 
    } 
    else 
    { 
     string str = c.Text + "@"; 
     str = str.Replace("@", Environment.NewLine); 
     label1.Text = label1.Text.Replace(str, ""); 
    }