首页 > 解决方案 > 嵌套循环计数器

问题描述

我正在尝试创建一个嵌套循环,它需要一个给定的数字“每张视图”,并根据这个数字,让我们从 (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(object sender, EventArgs e)
{
    int numViewsPerSheet = (int)thisForm.numViewsPerSheet.Value;
    
    for (int i = 0; i < numViewsPerSheet; i++)
    {
        for (int j = 0; j < Models.Count; j++)
        {
            Models[j].SheetObjModel.SheetNumber = i.ToString().PadLeft(2, '0');
            if (j == numViewsPerSheet - 1)
            {
                break;
            }
        }
    }
    thisForm.RefreshDataGrid();
}

图一

图二

图三

标签: c#winformsradgridview

解决方案


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

尝试:

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

        for (int j = 0; j < Models.Count; j++)
        {
            int i = j/numViewsPerSheet; // 0,0,0,1,1,1,2,2,2... for num=3
            Models[j].SheetObjModel.SheetNumber = i.ToString().PadLeft(2, '0');          
        }
        thisForm.RefreshDataGrid();
    }

推荐阅读