&引用;重置";对于C#中的循环?
我有以下代码&引用;重置";对于C#中的循环?,c#,winforms,loops,C#,Winforms,Loops,我有以下代码 private List<CheckBox> list = new List<CheckBox>(); //Displays toppings in receipt foreach (CheckBox cbToppings in gbToppings.Controls) { if (cbToppings.Checked == true) { lis
private List<CheckBox> list = new List<CheckBox>();
//Displays toppings in receipt
foreach (CheckBox cbToppings in gbToppings.Controls)
{
if (cbToppings.Checked == true)
{
list.Add(cbToppings);
iToppings++;
}
}
for (Int32 i = 0; i < list.Count; i++)
{
txtToppingsReceipt.Text += Convert.ToString(list[i].Text + Environment.NewLine);
}
private List=new List();
//在收据中显示浇头
foreach(选中gbToppings.Controls中的cbToppings)
{
if(cbToppings.Checked==true)
{
列表。添加(CBT浇头);
iToppings++;
}
}
for(Int32 i=0;i
我有一个带有复选框的groupbox,目标是在单击按钮(btnOrder)时在多行文本框中显示选中的项目。这一部分第一次工作得很好,但是,现在,当我再次单击btnOrder时,它没有清除原始输出,尽管我放置了txtToppingsReceive.clear()
我有另一个按钮,它基本上重置了所有字段,清除文本框代码就在这个按钮下面。然而,无论我把代码放在哪里,它都不想在每次单击btnOrder后清除该框
我做错什么了吗?我想,你们能帮我在每次循环运行后重置循环吗?如果我在for循环中输入“break;”,代码只运行一次,并且在第二次单击btnOrder时拒绝配合
我是编程新手,所以我可能会超越自己。不管怎样,希望你们能帮我解决这个问题……为什么不从
txttoppingsreivement.Text=“”
以清除文本框
txtToppingsReceipt.Text = "";
list.Clear();
//Displays toppings in receipt
foreach (CheckBox cbToppings in gbToppings.Controls)
{
if (cbToppings.Checked == true)
{
list.Add(cbToppings);
iToppings++;
}
}
for (Int32 i = 0; i < list.Count; i++)
{
txtToppingsReceipt.Text += Convert.ToString(list[i].Text + Environment.NewLine);
}
txttoppingsreivement.Text=”“;
list.Clear();
//在收据中显示浇头
foreach(选中gbToppings.Controls中的cbToppings)
{
if(cbToppings.Checked==true)
{
列表。添加(CBT浇头);
iToppings++;
}
}
for(Int32 i=0;i
If不建议使用多行文本框继续添加行。使用富文本框并使用
rtb.AppendText
为什么不直接从txttoppingsreivement.text=”“开始
以清除文本框
txtToppingsReceipt.Text = "";
list.Clear();
//Displays toppings in receipt
foreach (CheckBox cbToppings in gbToppings.Controls)
{
if (cbToppings.Checked == true)
{
list.Add(cbToppings);
iToppings++;
}
}
for (Int32 i = 0; i < list.Count; i++)
{
txtToppingsReceipt.Text += Convert.ToString(list[i].Text + Environment.NewLine);
}
txttoppingsreivement.Text=”“;
list.Clear();
//在收据中显示浇头
foreach(选中gbToppings.Controls中的cbToppings)
{
if(cbToppings.Checked==true)
{
列表。添加(CBT浇头);
iToppings++;
}
}
for(Int32 i=0;i
If不建议使用多行文本框继续添加行。使用富文本框并使用
rtb.AppendText
不要使用+=
运算符来追加字符串,请使用=
运算符来分配txtToppingsReceive.text的更改值。我有重构代码,将按预期工作
string totalToppings = string.Empty;
foreach (CheckBox cbToppings in gbToppings.Controls)
{
if (cbToppings.Checked == true)
{
totalToppings += cbToppings.Text + Environment.NewLine;
iToppings++;
}
}
txtToppingsReceipt.Text = totalToppings;
不要使用+=
运算符来追加字符串,请使用=
运算符来分配txttoppingsreceive.Text
的更改值。我有重构代码,将按预期工作
string totalToppings = string.Empty;
foreach (CheckBox cbToppings in gbToppings.Controls)
{
if (cbToppings.Checked == true)
{
totalToppings += cbToppings.Text + Environment.NewLine;
iToppings++;
}
}
txtToppingsReceipt.Text = totalToppings;
您的代码应该如下所示:
void MethodName()
{
List<CheckBox> list = new List<CheckBox>();
foreach (CheckBox cbToppings in gbToppings.Controls)
{
if (cbToppings.Checked == true)
{
list.Add(cbToppings);
iToppings++;
}
}
txtToppingsReceipt.Text = "";
for (Int32 i = 0; i < list.Count; i++)
{
txtToppingsReceipt.Text += list[i].Text + Environment.NewLine;
}
}
void MethodName()
{
txtToppingsReceipt.Text = "";
foreach (CheckBox cbToppings in gbToppings.Controls)
{
if (cbToppings.Checked == true)
{
txtToppingsReceipt.Text += list[i].Text + Environment.NewLine;
iToppings++;
}
}
}
不过,您可以这样编写代码:
var list = gbToppings.Controls.OfType<CheckBox>().Where(x => x.Checked == true).Select(x => x.Text).ToList();
iToppings = list.Count;
txtToppingsReceipt.Text = String.Join(Environment.NewLine, list);
var list=gbToppings.Controls.OfType()。其中(x=>x.Checked==true)。选择(x=>x.Text)。ToList();
iToppings=list.Count;
txtToppingsReceive.Text=String.Join(Environment.NewLine,list);
您的代码应该如下所示:
void MethodName()
{
List<CheckBox> list = new List<CheckBox>();
foreach (CheckBox cbToppings in gbToppings.Controls)
{
if (cbToppings.Checked == true)
{
list.Add(cbToppings);
iToppings++;
}
}
txtToppingsReceipt.Text = "";
for (Int32 i = 0; i < list.Count; i++)
{
txtToppingsReceipt.Text += list[i].Text + Environment.NewLine;
}
}
void MethodName()
{
txtToppingsReceipt.Text = "";
foreach (CheckBox cbToppings in gbToppings.Controls)
{
if (cbToppings.Checked == true)
{
txtToppingsReceipt.Text += list[i].Text + Environment.NewLine;
iToppings++;
}
}
}
不过,您可以这样编写代码:
var list = gbToppings.Controls.OfType<CheckBox>().Where(x => x.Checked == true).Select(x => x.Text).ToList();
iToppings = list.Count;
txtToppingsReceipt.Text = String.Join(Environment.NewLine, list);
var list=gbToppings.Controls.OfType()。其中(x=>x.Checked==true)。选择(x=>x.Text)。ToList();
iToppings=list.Count;
txtToppingsReceive.Text=String.Join(Environment.NewLine,list);
如果代码不起作用,您一定是做错了什么。你犯了什么错误?您应该在groupbox中使用一个RadioButton,它一次只允许选中一个RadioButton。如果需要多个项目,请选中复选框,然后使用复选框。要取消选中所有框,请将它们放入列表:列表框=新建列表();盒子。添加(CBC浇头);框。添加(另一个框);foreach(框中的复选框){box.Checked=false;}执行清除的代码在哪里?box.Checked=false@ChiefTwoPencils清除文本框的代码实际上是txtToppingsReceive.Clear()。@jdweng没有物理错误。。。它工作,只是不是我想要的方式。如果代码不工作,你一定是做错了什么。你犯了什么错误?您应该在groupbox中使用一个RadioButton,它一次只允许选中一个RadioButton。如果需要多个项目,请选中复选框,然后使用复选框。要取消选中所有框,请将它们放入列表:列表框=新建列表();盒子。添加(CBC浇头);框。添加(另一个框);foreach(框中的复选框){box.Checked=false;}执行清除的代码在哪里?box.Checked=false@ChiefTwoPencils清除文本框的代码实际上是txtToppingsReceive.Clear()。@jdweng没有物理错误。。。它很有效,只是不是我想要的方式。我试着用“”;,但这也不起作用,我认为如果我也必须清除列表,这是有意义的?是的。这就是为什么我在.Text=”“之后添加了list.Clear();我试着用“;”;,但这也不起作用,我认为如果我也必须清除列表,这是有意义的?是的。这就是为什么我在.Text=”“之后添加了list.Clear();谢谢你们这么多的神秘性,它现在工作得很好。谢谢你们这么多的神秘性,它现在工作得很好。理想情况下你们也不应该这样做,因为字符串是不可变的。StringBuilder是一种方法。理想情况下,您也不应该这样做,因为字符串是不可变的。StringBuilder是一个不错的选择。