当我单击一个复选框时,我希望下一个复选框信息显示在新行中,我知道如何使用“ \ 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", "");
}
}
我希望复选框的文本显示在新行上,但是当重新选中该复选框时,空格不应出现在其上方。
答案 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);
}