C# winform,鼠标放在不同的label上就会有不同的图片显示在picturebox中;就像放在QQ头像上浮出这个人信息
展开全部
新建Form,拖两个Label,一个PictureBox,然后粘贴代码:
public partial class Form1 : Form
{
Dictionary<Label, string> Dic;
public Form1()
{
InitializeComponent();
Dic = new Dictionary<Label, string>()
{
{this.label1,@"D:\1.png"},
{this.label2,@"D:\2.png"}
//...其他仿照加
};
foreach (Label lb in Dic.Keys)
{
lb.MouseHover += lb_MouseHover;
}
}
void lb_MouseHover(object sender, EventArgs e)
{
Label lb = sender as Label;
this.pictureBox1.ImageLocation = Dic[lb];
}
}
追问
代码很简单,已经实现。但是我想把鼠标移到label的外面时,图片就自己消失,怎么办
追答
我先回答,而且你也说用了我的方法,但不采纳,还让我继续回答么?
展开全部
窗体上加几个Label,一个picturebox,一个imagelist,添加几张图到imagelist里,然后给formload和Form MouseMove添加代码
List<Label> list = new List<Label>();//label数组
int idx = 0;//当前显示的图像索引号
private void Form1_Load(object sender, EventArgs e)
{
int i = 0;
foreach(Label c in Controls.OfType<Label>())
{
c.Tag = i++; //这里只是演示,所以是假定图像索引号与序号对应,即list[0]对应的imagelist中图像也是0,
//实际用的时候你可以灵活处理,比如说将相关信息存入(如用户名等),然后与它与实际的文件名对应
//也可以用诸如Dictionary之类的结构来存放用户的信息以及与之对应的图像名
c.MouseEnter += c_MouseEnter;
list.Add(c);
}
}
void c_MouseEnter(object sender, EventArgs e)
{
if(int.TryParse(((Label)sender).Tag.ToString(),out idx))
{
if (idx < imageList1.Images.Count && pb1.Image != imageList1.Images[idx])
{
pb1.Image = imageList1.Images[idx];
pb1.Visible = true;
}
}
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
pb1.Visible = false;
if (pb1.Image != null) pb1.Image = null;
}
追问
代码已经实现,跟楼上一样。但是我想把鼠标移到label的外面时,图片就自己消失,怎么办
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询