C# 通过按下按钮,使一组图片在单个pictureBox中逐个显示
我认为我的问题是不言自明的,这是我的问题。我对C语言比较陌生,我有C++的一些经验,但是从来没有处理过这些问题。当我编译我的代码时,它说我尝试在6次点击后除以零。 以下是我目前的代码: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
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