c#do-while循环如何重置变量?

时间:2016-04-08 02:40:54

标签: c# printing while-loop do-while

 int line = 0;///i want to reset this back to 0///
    private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
    {
        int y = 0;
        Console.WriteLine("1st " + line);
        do
        {
            e.Graphics.DrawString(invoiceList[line], new Font("Arial", 10, FontStyle.Regular), Brushes.Black, 50, 200);
            Console.WriteLine("2nd " + line);
            line += 1;
            Console.WriteLine("3rd " + line);
            y += 1;

            if (y > 0)
            {
                e.HasMorePages = line != invoiceList.Count();

                Console.WriteLine("4th " + line);
                break;   
            }  
        } while (line < invoiceList.Count());
        Console.WriteLine("6th " + line);
    }

如何重置变量line?因为当我按printPreviewDialog结果System.ArgumentOutOfRangeException时的打印按钮时,它会继续累加。

编辑1: 对不起,伙计看起来我不清楚。它的这一行e.Graphics.DrawString(invoiceList[line], new Font("Arial", 10, FontStyle.Regular), Brushes.Black, 50, 200);给了我一个错误。

首先this is what happen when i press the print button

从图片中可以看出&#34; 6th(line)= 12&#34;或索引12。

因此,当我再次从打印预览中按下打印按钮以打印物理副本时,它将显示this。对不起,我很难解释事情。

4 个答案:

答案 0 :(得分:0)

如果您需要i位于外部范围内,则必须在内部范围内的某处重置i = 0;

Console.WriteLine("6th " + line);之后,您可以立即添加一行,然后只说i = 0;

通过这种方式,您的代码会执行您所要求的内容,并且您仍然拥有i的外部范围。

答案 1 :(得分:0)

//设置为0

        if (y > 0)
        {
            e.HasMorePages = line != invoiceList.Count();

            Console.WriteLine("4th " + line);
            break;   
        }  
    } while (line < invoiceList.Count());
    Console.WriteLine("6th " + line);
   line = 0;
}

答案 2 :(得分:0)

private void printDocument1_BeginPrint(object sender, PrintEventArgs e)
    {
        line = 0;
    }

伙计们感谢您的时间,我想通了:P。

答案 3 :(得分:0)

我用这个程序进行排序,希望它可以帮助别人。

static void SortArray()
    {
        int[] array = { 40, 5, 6, 1, 90, 23, 5 };
        //Array.Sort(array);
        int i = 0;

        while (i < array.Length)
        {
            bool flag = false;
            if (i < array.Length - 1)
            {
                if (array[i] > array[i + 1])
                {
                    int temp = array[i];
                    array[i] = array[i + 1];
                    array[i + 1] = temp;
                    //reset i
                    i = 0;
                    flag = true;
                }
            }
            if (!flag)
            {
                i++;
            }
        }
        //PRINT
        for (int a = 0; a < array.Length; a++)
        {
            Console.WriteLine(array[a].ToString());
        }

    }