foreach(ListViewItem item in this.lVw.Items )
{
if(pos.ToString ()==item.Text .ToString ())
{
MessageBox.Show ("该位置有图,请重新操作","提示信息",MessageBoxButtons.OK ,  MessageBoxIcon.Warning);
}
else
{
                                        //pb是动态生成的picturebox
pb.Location =new Point ((int)(this.pBx_bjl .Location .X +(i+j)*(pos-1)+i/2),this.pBx .Location .Y );//位置
pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage ;
this.pl .Controls .Add (pb);
this.lVw .Items .Add (添加数据的信息);//listview中添加数据
pb.Name =this.lVw .Items[0].Text .ToString ();//绑定
}
}实现:如果listview的第一列与pos是否相等,如果相等,提示messagebox,如果不 ,则动态生成picturebox添加数据,但是我这么写是动态生成不了的,因为在foreach中遍历,问:有办法不写遍历,就能够判断第一列中所有的数据和if中的pos的关系么

解决方案 »

  1.   

    给每个动态生成的控件创建唯一的ID每个循环前 pb 都应该 new 一下呀.
      

  2.   

    pb每次都要NEW一个,
    指定唯一的ID
      

  3.   

    不写遍历用这个ItemDataBound事件应该可以
      

  4.   

    pos是什么变数,也是文字列吗?
      

  5.   

    foreach(ListViewItem item in this.lVw.Items ) 
    {
    if(pos.ToString ()==item.Text .ToString ()) ==for(int i = 0; i < lVw.Items[i].Count; i++
    {
    if(pos.ToString ()==lVw.Items[i].Text) //都已经Text了还ToString()干什么 
      

  6.   

    用for行不 
                    如果MessageBox了,就不能动态生成和添加数据了,如果不MessageBox才能动态生成和添加数据
      

  7.   


    bool exist = false;
    for(int i=0;i<lVw.Items.Count;i++)
    {
        if(pos.ToString() == lVw.Items[i].Text)
            exist = true;
        else
        {
                                            //pb是动态生成的picturebox
            pb.Location =new Point ((int)(this.pBx_bjl .Location .X +(i+j)*(pos-1)+i/2),this.pBx .Location .Y );//位置
            pb.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage ;
            this.pl .Controls .Add (pb);
            this.lVw .Items .Add (添加数据的信息);//listview中添加数据
            pb.Name =this.lVw .Items[0].Text .ToString ();//绑定
        } 
    }
    if(exist)
    {
        MessageBox.Show ("位置"+pos.ToString()+"有图,请重新操作","提示信息",MessageBoxButtons.OK ,  MessageBoxIcon.Warning); 
    }