c# winform 循环控件循环赋值问题?

如图片所显示那样我循环2行6列PictureBox控件,现在如何实现添加一个数据name就显示在1图中,添加第2条数据pass那么显示在1图中,name就显示到2图中,依... 如图片所显示那样 我循环2行6列PictureBox控件,现在如何实现 添加一个数据name就显示在1图中,添加第2条数据pass那么显示在1图中,name就显示到2图中,依次类推。最新数据要显示在1图中。。那位高手指点一下
四楼的回答是添加一个数据就添加一个容器,我需要的是在系统运行时就初始化2行6列的类似容器,每添加一条数据就放入容器中,最新的数据必需放在第一个容器中,其次在后面。高手们快出来解决问题了
展开
 我来答
shandian84
2011-03-31 · TA获得超过125个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:130万
展开全部
新建一个用户控件MyPictureBox;里面放一个PictureBox,一个 Label 控件
后台代码:
public partial class MyPictureBox : UserControl
{
public MyPictureBox()
{
InitializeComponent();
}
private string userName;
public string UserName
{
get { return userName; }
set {
userName = value;
lbUserName.Text = userName;
}
}
private Color pictureBackColor;
public Color PictureBackColor
{
get { return pictureBackColor; }
set
{
pictureBackColor = value;
pct.BackColor = pictureBackColor;
}
}
}
在Form1中放一个Panel,一个Button,一个TextBox
代码如下:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ShowPictureBox();
}
IList<string> stringList;
int controlsQuantity = 12;
int columnQuantity = 6;
private void ShowPictureBox()
{
int nowRow = 0;
int nowCol = 0;
for (int i = 0, j = 0; i < controlsQuantity; i++)
{
if (j > 0 && i % columnQuantity == 0)
{
nowRow++;
nowCol = 0;
}
j++;
nowCol++;
MyPictureBox pct = new MyPictureBox();//用户控件
pct.PictureBackColor = Color.Red;
pct.Location = new Point((pct.Size.Width + 5) * nowCol, (pct.Size.Height + 5) * nowRow);
panel1.Controls.Add(pct);
}
stringList = new List<string>(panel1.Controls.Count);//初始化字符串数组
}

private void button1_Click(object sender, EventArgs e)
{
stringList.Add(textBox1.Text);
if (stringList.Count > panel1.Controls.Count)
{
return;
}
for (int i = stringList.Count-1; i >= 0; i--)
{
//在MyPictureBox中显示textBox1中的数据
((MyPictureBox)panel1.Controls[stringList.Count-1 -i]).UserName = stringList[i];
}
}
}
要显示的数据输入到TextBox1中,点击按钮Button1增加到MyPictureBox中,
luck_bird
2011-03-29 · TA获得超过161个赞
知道小有建树答主
回答量:85
采纳率:0%
帮助的人:119万
展开全部
好办啊,用FlowLayoutPanel 控件,看看他自动生成的代码,是怎么把你的控件按顺序排放的,就知道了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
潇洒豆皮
2011-03-29 · TA获得超过121个赞
知道答主
回答量:124
采纳率:0%
帮助的人:105万
展开全部
关键就是你要准确找到这个控件 foreach遍历当前面板中的Controls,通过ID来判断进行相应的操作啊!思路就是这个,思路决定出路!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b2d0ce9435
2011-03-29 · TA获得超过166个赞
知道小有建树答主
回答量:515
采纳率:0%
帮助的人:485万
展开全部
foreach (Control pic in this.pic_nav) //this.pic_nav为存放PictureBox上的层容器
{
if (pic.GetType().ToString() == "System.Windows.Forms.PictureBox")
{
PictureBox picd = (PictureBox)pic;
////写条件语句

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yaobing0687
2011-03-29 · TA获得超过988个赞
知道小有建树答主
回答量:1309
采纳率:0%
帮助的人:904万
展开全部
很简单:
定义变量:
int x=5;//x为总共的数据数
List<string> ls=new List<string>();//存放数据的容器(也可以使用12维的数组,但是效果不好)也可是其他类型。
添加数据://假设添加字符串 string str="你的字符串":
ls.Add(str);
在添加之后进行数据刷新。
for(int i=ls.count;i>0;i--){
//吧最新的数据放到最前面
int j=0;
foreach (Control c in this.Panel1) //this.pic_nav为存放PictureBox上的层容器
{
if (pic.GetType()==typeof(PictureBox))
{
PictureBox pic = (PictureBox)pic;
if(ls.count>j){
pic.name=ls[i];//当然可以使其他操作
}
j++;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式