我有六個Pictureboxes和一個for
循環。我想用與'i'變量相同的數字來指代PictureBox,這個變量在for
循環中增加。在C#中使用'for'循環來爲圖片框編號'i'填充圖像
例如,如果我的for
循環中的'i'變量爲2,我想將圖像分配給picturebox2。
我該如何做到最簡單的方法?這是一個獨特的方式,也適用於其他控件(即標籤,文本框)會很好。 :)在一個陣列的控制
我有六個Pictureboxes和一個for
循環。我想用與'i'變量相同的數字來指代PictureBox,這個變量在for
循環中增加。在C#中使用'for'循環來爲圖片框編號'i'填充圖像
例如,如果我的for
循環中的'i'變量爲2,我想將圖像分配給picturebox2。
我該如何做到最簡單的方法?這是一個獨特的方式,也適用於其他控件(即標籤,文本框)會很好。 :)在一個陣列的控制
認沽引用:
PictureBox[] boxes = {
PictureBox1, PictureBox2, PictureBox3, PictureBox4, PictureBox5, PictureBox6
};
然後你可以通過他們的循環:
for (int i = 0; i < boxes.Length; i++) {
// use boxes[i] to access each picture box
}
您可以使用任何控制的Tag
屬性來提供額外的信息(如圖像名稱或索引)。例如。你可以爲你的pictureBoxes提供索引。還可以使用的ImageList到圖像的商店名單:
foreach(var pictureBox in Controls.OfType<PictureBox>())
{
if (pictureBox.Tag == null) // you can skip other pictureBoxes
continue;
int imageIndex = (int)pictureBox.Tag;
pictureBox.Image = imageList.Images[imageIndex];
}
您也可以通過標記值搜索圖片框:
var pictureBox = Controls.OfType<PictureBox>()
.FirstOrDefault(pb => (int)pb.Tag == index);
另一種選擇 - 如果您的所有pictureBoxes有名稱,如pictureBox{index}
。在這種情況下,你可以去無標籤的用法:
var pictureBox = Controls
.OfType<PictureBox>()
.FirstOrDefault(pb => Int32.Parse(pb.Name.Replace("pictureBox", "")) == index);
我理解imagelist的想法,我不明白如何使用標籤屬性,即填充picturebox3與圖像如果爲循環迭代器== 3雖然。 –
有兩個選項 - 要麼提供來自代碼'pictureBox1.Tag = 1'的Tag,要麼從設計者提供 - 選擇pictureBox並設置它的Tag屬性。但在第二種情況下,標籤將包含字符串!小心。 –
@lazyberezovsky有點不相干:你可以請提供代碼使用視覺c + +標籤?謝謝 –
我PictureBoxes的數組實現這一點:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace ImageChanger
{
public partial class Form1 : Form
{
PictureBox[] pictureBoxs=new PictureBox[4];
public Form1()
{
InitializeComponent();
pictureBoxs[0] = pictureBox1;
pictureBoxs[1] = pictureBox2;
pictureBoxs[2] = pictureBox3;
pictureBoxs[3] = pictureBox4;
}
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 4; i++)
{
// Load Image from Resources
pictureBoxs[i].Image = Properties.Resources.img100;
Application.DoEvents();
Thread.Sleep(1000);
}
}
}
}
我試過這個,但我得到了'錯誤名稱'PictureBox2'在當前上下文中不存在' –
請看上面的代碼。我爲你實施一個樣本 –
我以前試過,但我得到 '錯誤名稱'PictureBox2'在當前上下文中不存在' –
@HolyGoat然後你在錯誤的地方創建數組。 –
@HolyGoat - 這個答案會起作用 - 但你可能需要使用'pictureBox2'而不是'PictureBox2'定義你的數組。請注意駱駝案件與帕斯卡案件的區別。 – Enigmativity