C#关于在遍历集合过程中获取集合某个对象的问题
privatevoidShowAllForm_Load(objectsender,EventArgse){intY=90;Msgmsg=newMsg();foreach(...
private void ShowAllForm_Load(object sender, EventArgs e)
{
int Y = 90;
Msg msg = new Msg();
foreach (Msg obj in msg.GetObjList())
{
LinkLabel lkl = new LinkLabel();
lkl.Text = obj.sName;
lkl.Location = new Point(30,Y);
lkl.Click += (lk1_Click);
this.Controls.Add(lkl);
Y = Y + 30;
}
}
这里是动态加载LinkLabel控件过程中的一个问题,msg.GetObjList()的返回值是一个对象的集合,我需要知道用户点击了哪个LinkLabel控件,然后获得这个对象,怎么搞啊?小弟新手,来学习的,求大神指教!
public void ShowAllForm_Load(object sender, EventArgs e)
{
int Y = 90;
foreach (Msg obj in ObjList)
{
LinkLabel lkl = new LinkLabel();
lkl.Text = obj.sName;
lkl.Location = new Point(30,Y);
this.Controls.Add(lkl);
Y =Y+30;
}
}
private void lk1_Click(object sender,EventArgs e)
{
this.Close();
ShowForm mShowForm = new ShowForm();
mShowForm.Show();
}
这是我的代码,只要判断点击了哪个linklabel控件,然后就将此时的foreach里面的obj传给ShowForm来实例化,即 ShowForm mShowForm = new ShowForm(obj);
请教.... 展开
{
int Y = 90;
Msg msg = new Msg();
foreach (Msg obj in msg.GetObjList())
{
LinkLabel lkl = new LinkLabel();
lkl.Text = obj.sName;
lkl.Location = new Point(30,Y);
lkl.Click += (lk1_Click);
this.Controls.Add(lkl);
Y = Y + 30;
}
}
这里是动态加载LinkLabel控件过程中的一个问题,msg.GetObjList()的返回值是一个对象的集合,我需要知道用户点击了哪个LinkLabel控件,然后获得这个对象,怎么搞啊?小弟新手,来学习的,求大神指教!
public void ShowAllForm_Load(object sender, EventArgs e)
{
int Y = 90;
foreach (Msg obj in ObjList)
{
LinkLabel lkl = new LinkLabel();
lkl.Text = obj.sName;
lkl.Location = new Point(30,Y);
this.Controls.Add(lkl);
Y =Y+30;
}
}
private void lk1_Click(object sender,EventArgs e)
{
this.Close();
ShowForm mShowForm = new ShowForm();
mShowForm.Show();
}
这是我的代码,只要判断点击了哪个linklabel控件,然后就将此时的foreach里面的obj传给ShowForm来实例化,即 ShowForm mShowForm = new ShowForm(obj);
请教.... 展开
4个回答
展开全部
lk1_Click(object sender,EventArgs e) 中的sender所对应的就是事件触发的源对象,在你这儿只需要转换成linklabel就成了点击的那个linklabel
补充一点, foreach (Msg obj in msg.GetObjList()) 不推荐这样写,最好在这之前声明一个变量来放msg.GetObjList(),这样避免每次循环都执行msg.GetObjList(),如果GetObjList()的操作很耗时那你这样写就更耗时了,而且可以避免前后调用GetObjList()所引起的数据差异
补充一点, foreach (Msg obj in msg.GetObjList()) 不推荐这样写,最好在这之前声明一个变量来放msg.GetObjList(),这样避免每次循环都执行msg.GetObjList(),如果GetObjList()的操作很耗时那你这样写就更耗时了,而且可以避免前后调用GetObjList()所引起的数据差异
展开全部
lkl.Click += (lk1_Click);
你可以定义个 lkeventarg 类 继承自eventArg 然后添加一个id属性 构造函数中为这个id 附上lk控件的id
然后 lkl.Click += (lk1_Click,e);
处理事件时 用e.id来判断那个控件触发了事件
你可以定义个 lkeventarg 类 继承自eventArg 然后添加一个id属性 构造函数中为这个id 附上lk控件的id
然后 lkl.Click += (lk1_Click,e);
处理事件时 用e.id来判断那个控件触发了事件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以使用控件的Tag属性来区分点击了哪个LinkLabel,你可以为每一个控件的Tag属性给一个不同的值,Tag属性的类型是Object基类
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询