Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.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# 通过按下按钮,使一组图片在单个pictureBox中逐个显示_C#_Arrays_Switch Statement_Runtime Error_Picturebox - Fatal编程技术网

C# 通过按下按钮,使一组图片在单个pictureBox中逐个显示

C# 通过按下按钮,使一组图片在单个pictureBox中逐个显示,c#,arrays,switch-statement,runtime-error,picturebox,C#,Arrays,Switch Statement,Runtime Error,Picturebox,我认为我的问题是不言自明的,这是我的问题。我对C语言比较陌生,我有C++的一些经验,但是从来没有处理过这些问题。当我编译我的代码时,它说我尝试在6次点击后除以零。 以下是我目前的代码: public partial class Form3 : Form { int btnClick=0; int brPicsArray = 7; public Form3() { InitializeComponent(); } private void

我认为我的问题是不言自明的,这是我的问题。我对C语言比较陌生,我有C++的一些经验,但是从来没有处理过这些问题。当我编译我的代码时,它说我尝试在6次点击后除以零。 以下是我目前的代码:

public partial class Form3 : Form {
    int btnClick=0;
    int brPicsArray = 7; 
    public Form3() {
        InitializeComponent();
    }

    private void Form3_Load(object sender, EventArgs e) {

    }

    private void button1_Click(object sender, EventArgs e) {
        btnClick++;
        brPicsArray = btnClick % brPicsArray;
        switch (brPicsArray) {
            case 1: pictureBox1.Image = Image.FromFile(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic1.jpg"); 
                break;
            case 2: pictureBox1.Image = Image.FromFile(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic2.jpg");
                break;
            case 3: pictureBox1.Image = Image.FromFile(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic3.jpg"); 
                break;
            case 4: pictureBox1.Image = Image.FromFile(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic4.jpg");
                break;
            case 5: pictureBox1.Image = Image.FromFile(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic5.jpg");
                break;
            case 6: pictureBox1.Image = Image.FromFile(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic6.jpg"); 
                break;
            case 7: pictureBox1.Image = Image.FromFile(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic7.jpg"); 
                break;

模(%)是一个除法函数,因此当brPicsArray变为0时(当除法没有余数时),您将得到一个被零除的错误。

模(%)是一个除法函数,因此当brPicsArray变为0时(当除法没有余数时),您将得到一个被零除的错误。

模(%)是一个除法函数,因此当brPicsArray变为0时(当除法没有余数时)您将得到一个被零除的错误。

模(%)是一个除法函数,因此当brPicsArray变为0时(当除法没有余数时)您将得到一个被零除的错误。

您的问题是您正在将
brPicsArray
设置为
b单击%brPicsArray
,最终将等于
0

相反,您应该使用以下内容:

switch (brPicsArray % btnClick) {
    case 0: 
    ...
}
注意:我们从案例索引0开始,这是更标准的,并且我们没有更改
brPicsArray
的值


我建议您将图像名称存储在数组中,并使用数组的
Count
属性而不是单独存储的变量。在这种情况下,您将得到类似以下内容:

public partial class Form3 : Form {
    string[] imageFilenames = new string[] {
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic1.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic2.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic3.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic4.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic5.jpg",
    };
    int btnClick=0;

    private void button1_Click(object sender, EventArgs e) {
        btnClick++;
        pictureBox1.Image = Image.FromFile(imageFilenames[imageFilenames.Count % btnClick]);
    }
}

您的问题是您正在将
brPicsArray
设置为
b单击%brPicsArray
,这最终将等于
0

相反,您应该使用以下内容:

switch (brPicsArray % btnClick) {
    case 0: 
    ...
}
注意:我们从案例索引0开始,这是更标准的,并且我们没有更改
brPicsArray
的值


我建议您将图像名称存储在数组中,并使用数组的
Count
属性而不是单独存储的变量。在这种情况下,您将得到类似以下内容:

public partial class Form3 : Form {
    string[] imageFilenames = new string[] {
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic1.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic2.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic3.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic4.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic5.jpg",
    };
    int btnClick=0;

    private void button1_Click(object sender, EventArgs e) {
        btnClick++;
        pictureBox1.Image = Image.FromFile(imageFilenames[imageFilenames.Count % btnClick]);
    }
}

您的问题是您正在将
brPicsArray
设置为
b单击%brPicsArray
,这最终将等于
0

相反,您应该使用以下内容:

switch (brPicsArray % btnClick) {
    case 0: 
    ...
}
注意:我们从案例索引0开始,这是更标准的,并且我们没有更改
brPicsArray
的值


我建议您将图像名称存储在数组中,并使用数组的
Count
属性而不是单独存储的变量。在这种情况下,您将得到类似以下内容:

public partial class Form3 : Form {
    string[] imageFilenames = new string[] {
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic1.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic2.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic3.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic4.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic5.jpg",
    };
    int btnClick=0;

    private void button1_Click(object sender, EventArgs e) {
        btnClick++;
        pictureBox1.Image = Image.FromFile(imageFilenames[imageFilenames.Count % btnClick]);
    }
}

您的问题是您正在将
brPicsArray
设置为
b单击%brPicsArray
,这最终将等于
0

相反,您应该使用以下内容:

switch (brPicsArray % btnClick) {
    case 0: 
    ...
}
注意:我们从案例索引0开始,这是更标准的,并且我们没有更改
brPicsArray
的值


我建议您将图像名称存储在数组中,并使用数组的
Count
属性而不是单独存储的变量。在这种情况下,您将得到类似以下内容:

public partial class Form3 : Form {
    string[] imageFilenames = new string[] {
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic1.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic2.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic3.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic4.jpg",
        "C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic5.jpg",
    };
    int btnClick=0;

    private void button1_Click(object sender, EventArgs e) {
        btnClick++;
        pictureBox1.Image = Image.FromFile(imageFilenames[imageFilenames.Count % btnClick]);
    }
}

您得到错误是因为。 如果btnClick=7,则执行以下操作

btnClick % brPicsArray.

7 % 7

这两个函数都返回0;

您得到错误是因为。 如果btnClick=7,则执行以下操作

btnClick % brPicsArray.

7 % 7

这两个函数都返回0;

您得到错误是因为。 如果btnClick=7,则执行以下操作

btnClick % brPicsArray.

7 % 7

这两个函数都返回0;

您得到错误是因为。 如果btnClick=7,则执行以下操作

btnClick % brPicsArray.

7 % 7

两者都返回0;

我认为您不需要在这里进行切换,因为您的图片标有一个数字,并且您正在计算一个数字以获取图像,因此请计算数字,并将其附加到文件名中,但请确保您的数字从未超出范围(即1-7)

例如:

private_void button1_Click(object sender, EventArgs e)
{
    btnClick++;
    if(btnClick > 7) btnClick = 1; // or 7 if you don't want to loop
    pictureBox1.Image = Image.FromFile(String.Format(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic{0}.jpg", btnClick));
}

我认为您不需要在这里进行切换,因为您的图片标有一个数字,并且您正在计算一个数字以获取图像,因此请计算该数字,并将其附加到文件名中,但请确保您的数字从未超出范围(即1-7)

例如:

private_void button1_Click(object sender, EventArgs e)
{
    btnClick++;
    if(btnClick > 7) btnClick = 1; // or 7 if you don't want to loop
    pictureBox1.Image = Image.FromFile(String.Format(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic{0}.jpg", btnClick));
}

我认为您不需要在这里进行切换,因为您的图片标有一个数字,并且您正在计算一个数字以获取图像,因此请计算该数字,并将其附加到文件名中,但请确保您的数字从未超出范围(即1-7)

例如:

private_void button1_Click(object sender, EventArgs e)
{
    btnClick++;
    if(btnClick > 7) btnClick = 1; // or 7 if you don't want to loop
    pictureBox1.Image = Image.FromFile(String.Format(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic{0}.jpg", btnClick));
}

我认为您不需要在这里进行切换,因为您的图片标有一个数字,并且您正在计算一个数字以获取图像,因此请计算该数字,并将其附加到文件名中,但请确保您的数字从未超出范围(即1-7)

例如:

private_void button1_Click(object sender, EventArgs e)
{
    btnClick++;
    if(btnClick > 7) btnClick = 1; // or 7 if you don't want to loop
    pictureBox1.Image = Image.FromFile(String.Format(@"C:\Users\Korice\Documents\Visual Studio 2012\Projects\.....\form3pic{0}.jpg", btnClick));
}

一个非常小的问题,您初始化了
brPicsArray
值并对其进行了修改,结果是
0
并因此被零除异常,这是一个小的解决方案

 private void button1_Click(object sender, EventArgs e)
    {
        btnClick++;
        int switchPicsValue = btnClick % brPicsArray;
        switch (switchPicsValue)

只需为
开关初始化一个新变量

一个非常小的问题,您初始化了
brPicsArray
值并对其进行了修改,结果是
0
,因此被零除异常,这是一个小的解决方案

 private void button1_Click(object sender, EventArgs e)
    {
        btnClick++;
        int switchPicsValue = btnClick % brPicsArray;
        switch (switchPicsValue)

只需为
开关初始化一个新变量

一个非常小的问题,您初始化了
brPicsArray
值并对其进行了修改,结果是
0
,因此被零除异常,这是一个小的解决方案

 private void button1_Click(object sender, EventArgs e)
    {
        btnClick++;
        int switchPicsValue = btnClick % brPicsArray;
        switch (switchPicsValue)

只需为
开关初始化一个新变量

一个非常小的问题,您初始化了
brPicsArray
值并对其进行了修改,结果是
0
,因此被零除异常,这是一个小的解决方案

 private void button1_Click(object sender, EventArgs e)
    {
        btnClick++;
        int switchPicsValue = btnClick % brPicsArray;
        switch (switchPicsValue)

只需为
开关初始化一个新变量

在调试器中运行它,然后查看
btnClick
brPicsArray
的值。我想你会对结果感到惊讶,因为你正在重用这些变量。哦,亲爱的@huMptyduMp