100分在线等,C#自定义控件怎么拥有独立的事件和方法

如图,当运行后点第一个自定义控件label1后,他的效果始终出现在最后一个。怎么让他效果在点哪个出现在哪个身上。在线等。自定义控件的属性能独立,事件不是。由于名字要传递,... 如图,当运行后点第一个自定义控件label1 后,他的效果始终出现在最后一个。怎么让他效果在点哪个出现在哪个身上。在线等。自定义控件的属性能独立,事件不是。由于名字要传递,label控件不能局部变量。
string name ="默认命名"; //全局变量,用于传递地址
label lblName= new Label(); //自定义label控件(接收地址)
lbel lblico = new label();//接收ico图片

private void lblIco_Click(object sender, EventArgs e) //点击事件
{ name=openfiledialog.ofdSource.FileName; //利用openfiledialog获取地址后传递给name变量
//通过点击ico图片,得到name变量的值更改lblname的text属性。}

然后问题来了,比如有3个自定义出来的控件
点第一个lblico控件(label1),地址每次都传递到最后一个lblname控件(label3)去了。
我要lblico(label1),lblname(label1).不要lblico(label1),lblname(label3)
----是通过lblico的事件改变lblname的text属性
展开
 我来答
yplliangzi
2013-06-01
知道答主
回答量:26
采纳率:0%
帮助的人:24.1万
展开全部
估计是你设置事件处理函数的地方有问题,事件其实是一个特别的类成员,对于实例化的对象来说事件与属性都是独立的,只是看设置什么事件处理函数给它们。像你可以给3个label都设置相同的处理函数,而处理函数里面写的只是改变第3个label的属性,就会出现你说的情况。
追问
不懂...那3个label是自定义生成的,我只是比方说先生成3个。
label.BackColor 属性能点哪个label 那个label变色,而通过name变量传递给label.text,只会到最后一个。求解决办法。让label.text=name。实现点哪个,哪个变
追答
请楼主把全部代码都贴出来,好让我们看清楚。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百百mp3
2013-06-01 · TA获得超过855个赞
知道小有建树答主
回答量:901
采纳率:90%
帮助的人:551万
展开全部
不是很明白楼主的意思,你说的是这样的嘛?
定义事件(简单点不用委托):public event System.EventHandler a;
触发: a(this,new EventArgs()); //传递本控件
使用:
public void label1_a(object sender,EventArgs e)
{
label1 = (label1)sender; //获取定义的控件
label1.Text = "Test"; //修改值

}
更多追问追答
追问
a(this,new EventArgs());  报错   空指针异常   未将对象引用设置到对象的实例。
去了上面那句
label1 = (label1)sender; ()是要放类型吧? 这个早试过了,地址名字每次都到最后一个label
追答

看了上下楼和楼主的补充,明白了楼主的意思,这种不用自创事件都可以的:

string name ="默认命名";  //全局变量,用于传递地址
/*自定义label控件*/
private void lblIco_Click(object sender, EventArgs e)  //点击事件 
{
    name=openfiledialog.ofdSource.FileName;
    //利用openfiledialog获取地址后传递给name变量
    ((Label)sender).Text = name
    //改变当前用户点击的label文本
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陈小冻冻
2013-05-31 · 超过33用户采纳过TA的回答
知道答主
回答量:138
采纳率:0%
帮助的人:74.4万
展开全部
委托 事件
追问
怎么委托事件? 我这刚学完一本书,还没教导这地步。书里也没有,感觉最主要的书中没有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式