选中复选框时添加新行

时间:2019-09-26 14:56:07

标签: c#

当我单击一个复选框时,我希望下一个复选框信息显示在新行中,我知道如何使用“ \ r \ n”执行此操作,但是当取消选中该复选框并重新选中该复选框时,它将添加一个新的文本上方的第一行将原始文本向下移动1行。 https://imgur.com/a/IHDDG85

我尝试了“ \ r \ n”和Environment.NewLine

        private void chkHamburger_CheckedChanged(object sender, EventArgs e)
        {

            if (chkHamburger.Checked == true)
            {
                txtHamburger.Enabled = true;
                txtHamburger.Text = "";
                txtHamburger.Focus();
                txtOrder.Text += ("Hamburger");
            }
            else
            {
                txtHamburger.Enabled = false;
                txtHamburger.Text = "0";
            }
            if (chkHamburger.Checked == false)
            {
                txtOrder.Text = txtOrder.Text.Replace("Hamburger", "");
            }
        }

        private void chkCheeseBurger_CheckedChanged(object sender, EventArgs e)
        {
            if (chkCheeseBurger.Checked == true)
            {
                txtCheeseBurger.Enabled = true;
                txtCheeseBurger.Text = "";
                txtCheeseBurger.Focus();
                txtOrder.Text += ("Cheese Burger");
            }
            else
            {
                txtCheeseBurger.Enabled = false;
                txtCheeseBurger.Text = "0";
            }
            if (chkCheeseBurger.Checked == false)
            {
                txtOrder.Text = txtOrder.Text.Replace("Cheese Burger", "");
            }

        }

我希望复选框的文本显示在新行上,但是当重新选中该复选框时,空格不应出现在其上方。

2 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是拥有一个例程,该例程可以独立于刚刚发生的事情来构建文本的内容-您可以使用join或循环来创建文本内容。

将此功能设为功能,并在复选框更改时调用它。该函数循环遍历您的所有项目,并将它们与格式和总计等一起添加到输出中。

答案 1 :(得分:1)

我建议您在添加或删除订单时使用List<string>。然后,很容易用string的一行代码来重建txtOrder数据。Join

List<string> orders = new List<string>();
private void chkHamburger_CheckedChanged(object sender, EventArgs e)
{
    txtHamburger.Enabled = chkHamburger.Checked;
    if (chkHamburger.Checked)
    {
        txtHamburger.Text = "";
        txtHamburger.Focus();
        orders.Add("Hamburger");
    }
    else
    {
        txtHamburger.Text = "0";
        orders.Remove("Hamburger");
    }
    UpdateOrders();
}
private void chkCheeseBurger_CheckedChanged(object sender, EventArgs e)
{
    txtCheeseBurger.Enabled = chkCheeseBurger.Checked;
    if (chkCheeseBurger.Checked)
    {
        txtCheeseBurger.Text = "";
        txtCheeseBurger.Focus();
        orders.Add("Cheese Burger");
    }
    else
    {
        txtCheeseBurger.Text = "0";
        orders.Remove("Cheese Burger");
    }
    UpdateOrders();
}

private void UpdateOrders()
{
    txtOrders.Text = string.Join(Environment.NewLine, orders);
}