Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;重置";对于C#中的循环?_C#_Winforms_Loops - Fatal编程技术网

&引用;重置";对于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是一个不错的选择。