Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.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_Radgridview - Fatal编程技术网

C# 嵌套循环计数器

C# 嵌套循环计数器,c#,winforms,radgridview,C#,Winforms,Radgridview,我正在尝试创建一个嵌套循环,它接受给定数量的“每张图纸的视图”,根据这个数量,让我们从(1)开始计算00,01,02,03,04,05,06。。。 现在,如果数字为(2),则将计数为00,00,01,01,02,02 数字现在是(3)将计数00,00,00,01,01,01 我已经尝试了下面代码的许多变体,我粘贴的内容并不是最接近我所期望的结果,但是我脑子里乱七八糟的,似乎不知道什么是简单的操作。我无法很好地在谷歌搜索中找到比较 请看附件中的图片,看看我想做什么 编辑。。。 表格是Telerik

我正在尝试创建一个嵌套循环,它接受给定数量的“每张图纸的视图”,根据这个数量,让我们从(1)开始计算00,01,02,03,04,05,06。。。 现在,如果数字为(2),则将计数为00,00,01,01,02,02 数字现在是(3)将计数00,00,00,01,01,01

我已经尝试了下面代码的许多变体,我粘贴的内容并不是最接近我所期望的结果,但是我脑子里乱七八糟的,似乎不知道什么是简单的操作。我无法很好地在谷歌搜索中找到比较

请看附件中的图片,看看我想做什么

编辑。。。 表格是Telerik的radGridView

public void ViewsPerSheetChange(对象发送方,事件参数e)
{
int numViewsPerSheet=(int)thisForm.numViewsPerSheet.Value;
对于(int i=0;i


你几乎拥有了它。这里不需要嵌套循环。对图纸编号使用整数除法。我重复相同的次数
x
其中
x
是每张图纸的视图数

尝试:

public void ViewsPerSheetChange(对象发送方,事件参数e)
{
int numViewsPerSheet=(int)thisForm.numViewsPerSheet.Value;
对于(int j=0;j
使用模运算符的示例:

using System;
                    
public class Program
{
    public static void Main()
    {
        int numViewsPerSheet = 2;
        int sheetIndex = 0;
        for ( int i = 0 ; i < 7; i++ )
        {
            Console.WriteLine("Sheet: {0:00}", sheetIndex);
            if( (i+1)%numViewsPerSheet==0)sheetIndex++;
        }
    }
}
使用系统;
公共课程
{
公共静态void Main()
{
int numViewsPerSheet=2;
指数=0;
对于(int i=0;i<7;i++)
{
WriteLine(“Sheet:{0:00}”,sheetIndex);
如果((i+1)%numViewsPerSheet==0)sheetIndex++;
}
}
}

结果:

Sheet: 00 Sheet: 00 Sheet: 01 Sheet: 01 Sheet: 02 Sheet: 02 Sheet: 03 活页:00 活页:00 活页:01 活页:01 活页:02 活页:02 活页:03 适应您的代码:

public void ViewsPerSheetChange(object sender, EventArgs e)
{
    int viewIndex = 0;
    int numViewsPerSheet = Math.Max((int)thisForm.numViewsPerSheet.Value, 1); // never trust user input!

    for (int i = 0; i < Models.Count; i++) {
        Models[i].SheetObjModel.SheetNumber = viewIndex.ToString("00");
        if ( (i+1)%numViewsPerSheet==0) viewIndex++;
    }
    thisForm.RefreshDataGrid();
}
public void ViewsPerSheetChange(对象发送方,事件参数e)
{
int viewIndex=0;
int numViewsPerSheet=Math.Max((int)thisForm.numViewsPerSheet.Value,1);//永远不要相信用户输入!
对于(int i=0;i
感谢您的回复,您的示例非常有用,我成功地通过while循环使其工作

public void ViewsPerSheetChange(object sender, EventArgs e)
    {
        int numViewsPerSheet = (int)thisForm.numViewsPerSheet.Value;

        int cnt = 0;
        int num = 0;
        if (numViewsPerSheet < 1)
        {
            return;
        }
        while (cnt < Models.Count)
        {
            for (int i = 0; i < numViewsPerSheet; i++)
            {
                Models[cnt].SheetObjModel.SheetNumber = num.ToString().PadLeft(2, '0');
                cnt++;
                if (cnt == Models.Count) break;
                
            }
            num++;
        }
    thisForm.RefreshDataGrid();
    }
public void ViewsPerSheetChange(对象发送方,事件参数e)
{
int numViewsPerSheet=(int)thisForm.numViewsPerSheet.Value;
int-cnt=0;
int num=0;
如果(numViewsPerSheet<1)
{
返回;
}
而(cnt
您只需要一个循环和一个索引。仅当i%NumViewsPerSheet==0时才增加sheetIndex。如果项目数不能除以工作表数怎么办?@Fildor所说的会起作用-只需使用模运算符..Olivier,我的问题怎么不清楚,或者错过了目标或困难?到目前为止我做了什么?向下箭头表示“没有显示足够的研究”,如何衡量研究?这看起来像是锅炉板的反应。我的问题得到了两位理解我所问问题的人的两个非常好的回答。所以我对你的评论感到很困惑。我会留意你对我在这个网站上的下一个问题的评论。Thanks@Olivier,我已按要求编辑并向telerik radgridview添加了一个标记。通用抄送。。。我就知道…:-)
public void ViewsPerSheetChange(object sender, EventArgs e)
    {
        int numViewsPerSheet = (int)thisForm.numViewsPerSheet.Value;

        int cnt = 0;
        int num = 0;
        if (numViewsPerSheet < 1)
        {
            return;
        }
        while (cnt < Models.Count)
        {
            for (int i = 0; i < numViewsPerSheet; i++)
            {
                Models[cnt].SheetObjModel.SheetNumber = num.ToString().PadLeft(2, '0');
                cnt++;
                if (cnt == Models.Count) break;
                
            }
            num++;
        }
    thisForm.RefreshDataGrid();
    }