读书人

关于listview中控件的激活有关问题

发布时间: 2012-05-24 11:55:41 作者: rapoo

关于listview中控件的激活问题。
打算实现如下功能:当点击listview中的某一项时,就新建一个picturebox来显示imagelist中存储的图片,代码如下:

C# code
private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)        {            if (e.IsSelected)            {                PictureBox pix1 = new PictureBox();                //pix1.Image = imageList1.Images[listView1.FocusedItem.ImageIndex];                pix1.Image = pic[listView1.FocusedItem.ImageIndex];                pix1.SizeMode = PictureBoxSizeMode.AutoSize;                pix1.MouseDown += new MouseEventHandler(pix1_MouseDown);                pix1.MouseMove += new MouseEventHandler(pix1_MouseMove);                this.panel1.Controls.Add(pix1);            }        }

如何实现对于存在项的判断呢?就是当listview中的某一项已经点击过并新建了picturebox之后,再次点击这一项,不再新建picturebox,而是激活这一项对应的picturebox。求解答。

[解决办法]
private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
if (e.IsSelected)
{
PictureBox pix1 = new PictureBox();
//pix1.Image = imageList1.Images[listView1.FocusedItem.ImageIndex];
pix1.Image = pic[listView1.FocusedItem.ImageIndex];
pix1.SizeMode = PictureBoxSizeMode.AutoSize;
pix1.MouseDown += new MouseEventHandler(pix1_MouseDown);
pix1.MouseMove += new MouseEventHandler(pix1_MouseMove);
pix1.Name = "picturebox_id" + listView1.SelectIndex.ToString();
this.panel1.Controls.Add(pix1);
}
}

判断:

if (this.Controls.Cast<Control>().Any(x => x.Name == "picturebox_id" + SelectIndex.ToString()))
{
...//存在
}
[解决办法]
不用每次都new新的picturebox,一个就可以了

[解决办法]
private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
if (e.IsSelected)

看不懂先查msdn。问google,百度。

读书人网 >C#

热点推荐