удаление указанной строки c из метки c# - PullRequest
0 голосов
/ 29 апреля 2020

когда я проверяю первый checkBox, строка текста "hello" назначается тексту метки, затем я проверяю второй checkBox, чтобы добавить строку "world", чтобы текст метки становился "hello world", проблема, если я снял флажок со второго checkBox я не могу удалить строку "мир", вот код:

public void checkBox1_Checked(){
     if(checkBox1.checked == true){
         label1.text = "hello ";
     }

}
public void checkBox2_Checked(){
     if(checkBox2.checked == true){
         label1.text += "world";
     }
     else{    //here is the problem
         label1.text -= "world";
     }
}

как я могу удалить строку "мир", чтобы текст метки становился только "привет"?

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Я полагаю, что при отмене проверки checkBox1 должен удалить "Hello"?

Вот подход, который учитывает все четыре возможности ... "", "Hello", "Hello World" и "World" :

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    fooBar();
}

private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
    fooBar();
}

private void fooBar()
{
    label1.Text = (checkBox1.Checked ? "Hello" : "") +
        (checkBox1.Checked && checkBox2.Checked ? " " : "") + 
        (checkBox2.Checked ? "World" : "");
}

Если ПОРЯДОК «Привет» и «Мир» не важен, то, возможно, вам это больше нравится?

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    if (checkBox1.Checked)
    {
        label1.Text += (label1.Text.Length == 0 ? "" : " ") + "Hello";
    }
    else
    {
        label1.Text = label1.Text.Replace("Hello", "").Trim();
    }
}

private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
    if (checkBox2.Checked)
    {
        label1.Text += (label1.Text.Length == 0 ? "" : " ") + "World";
    }
    else
    {
        label1.Text = label1.Text.Replace("World", "").Trim();
    }
}
1 голос
/ 29 апреля 2020

Вы можете использовать String.Replace.

label1.Text = label.Text.Replace("world", String.Empty);

+= для строки - это ярлык для s = s + "something". Я никогда не видел языка программирования, где можно удалить слово с конца.

Есть много сложностей, если слово повторяется. «Привет, мир» станет «Привет». Вы можете искать TrimEnd решений, если хотите просто удалить строку из конца другой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...