winform中一个自定义控件调用父窗体中的事件

wozaiztam 2012-11-23 10:40:11
我有一个自定义的控件UCTextInput,
在窗体Route中通过this.panel1.Controls.Add(UCTextInput);产生了自定义的控件。

现在的问题是我要在UCTextInput里面的一个button单击事件中调用Route中原本就有的控件,和事件,请问怎么弄啊?
...全文
529 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 6 楼 kzl332058242 的回复:
我只能说楼上的宝马和老虎说的很具体了

//1定义个委托用来掉方法 MyEventArgs类要你自己写里面可以加些你认为有用的属性,不想用的话可以不加这个参数,
public delegate void 相关事件的委托(object sender, MyEventArgs e);
//2定义事件 这句话写在你的控件的类的里面作为个字段,注册事件时要用的
public event 相关事件的委托 相关事件;
//3你的用户控件button事件
private void btn_Click(object sender, EventArgs e)
        {
            //各种逻辑代码...
            MyEventArgs ma=new MyEventArgs();
            相关事件(this,ma);
        }
下面是你调用用户控件的地方的代码

//这句话在你写完+=后按两下tab键,后面的东西会自动生成  
你的用户控件.相关事件 += new 相关事件的委托(事件);
事件((object sender, MyEventArgs e)
{
    //这里面写你的“调用Route中原本就有的控件,和事件”相关逻辑代码了.
}
不知道说清楚了没有,我表达能力有限……
很好的解决了我的问题
  • 打赏
  • 举报
回复
事件不是调用,可以叫注册。 是调用事件中执行的方法。
  • 打赏
  • 举报
回复
1.在UCTextinput中将你的button1设为public 2.在主窗体中 this.panel1.Controls.Add(UCTextInput); this.UCTextInput.Button1.Onclick+=aaaa(object s,evntargs e); void aaa(object s,evntargs e) { start();//你的方法。 }
coffee_sugar 2012-11-23
  • 打赏
  • 举报
回复
引用 7 楼 wozaiztam 的回复:
引用 6 楼 kzl332058242 的回复:我只能说楼上的宝马和老虎说的很具体了 C# code?123456789101112//1定义个委托用来掉方法 MyEventArgs类要你自己写里面可以加些你认为有用的属性,不想用的话可以不加这个参数,public delegate void 相关事件的委托(object sender, MyEventArgs e);/……
貌似我误导你了?委托是跟类是一个级别的,定义委托时别写到类里面,否则你在父窗体为用户控件注册事件时会出问题。 你自定义控件里面就是放你的那个事件啊 注意以下代码要写到你的用户控件内

//2定义事件 这句话写在你的控件的类的里面作为个字段,注册事件时要用的
public event 相关事件的委托 相关事件;
//3你的用户控件button事件
private void btn_Click(object sender, EventArgs e)
        {  
            //就这一句就够了,当你在执行代码的时候这句话就是调用的你父窗体里为自定义控件所注册的事件
            相关事件(this,ma);
        }
我给你写的那两段不是都说明了代码的位置吗?怎么你写的时候又把代码写错位置了。。。。 我建议你看下委托和事件的相关资料,你貌似对这个不是很明白所以写起来比较乱
wozaiztam 2012-11-23
  • 打赏
  • 举报
回复
我要在自定义控件中调用Route窗体中的btnPic_Click事件
wozaiztam 2012-11-23
  • 打赏
  • 举报
回复
引用 6 楼 kzl332058242 的回复:
我只能说楼上的宝马和老虎说的很具体了 C# code?123456789101112//1定义个委托用来掉方法 MyEventArgs类要你自己写里面可以加些你认为有用的属性,不想用的话可以不加这个参数,public delegate void 相关事件的委托(object sender, MyEventArgs e);//2定义事件 这句话写在你的控件的类的里面作为个……
这是我Route窗体里面的代码:

public delegate void startCamera(object sender);
public event startCamera Start;
        /// <summary>
        /// 拍照
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPic_Click(object sender, EventArgs e)
        {
           //......
            Start();
        }
那我自定义控件里面怎么写呢?
private void button1_Click(object sender, EventArgs e)
        {
            
        }
coffee_sugar 2012-11-23
  • 打赏
  • 举报
回复
我只能说楼上的宝马和老虎说的很具体了

//1定义个委托用来掉方法 MyEventArgs类要你自己写里面可以加些你认为有用的属性,不想用的话可以不加这个参数,
public delegate void 相关事件的委托(object sender, MyEventArgs e);
//2定义事件 这句话写在你的控件的类的里面作为个字段,注册事件时要用的
public event 相关事件的委托 相关事件;
//3你的用户控件button事件
private void btn_Click(object sender, EventArgs e)
        {
            //各种逻辑代码...
            MyEventArgs ma=new MyEventArgs();
            相关事件(this,ma);
        }
下面是你调用用户控件的地方的代码

//这句话在你写完+=后按两下tab键,后面的东西会自动生成  
你的用户控件.相关事件 += new 相关事件的委托(事件);
事件((object sender, MyEventArgs e)
{
    //这里面写你的“调用Route中原本就有的控件,和事件”相关逻辑代码了.
}
不知道说清楚了没有,我表达能力有限……
wozaiztam 2012-11-23
  • 打赏
  • 举报
回复
引用 4 楼 areslau08 的回复:
还是要定义事件委托,然后在子窗体内获取父窗体的实例对象,然后调用委托, 父窗体要公布对应的相关属性或者方法...
能具体点吗?
areslau08 2012-11-23
  • 打赏
  • 举报
回复
还是要定义事件委托,然后在子窗体内获取父窗体的实例对象,然后调用委托, 父窗体要公布对应的相关属性或者方法...
wozaiztam 2012-11-23
  • 打赏
  • 举报
回复
引用 2 楼 libinguest 的回复:
把事件内的代码写成方法,通过委托来调用。
能具体点吗?
风之影子 2012-11-23
  • 打赏
  • 举报
回复
把事件内的代码写成方法,通过委托来调用。
风之影子 2012-11-23
  • 打赏
  • 举报
回复
通过委托来进行调用。
wozaiztam 2012-11-23
  • 打赏
  • 举报
回复
终于搞出来了,谢谢
  • 打赏
  • 举报
回复
哦,我自定义事件命名习惯了~
wozaiztam 2012-11-23
  • 打赏
  • 举报
回复
引用 10 楼 ohsorry 的回复:
1.在UCTextinput中将你的button1设为public 2.在主窗体中 this.panel1.Controls.Add(UCTextInput); this.UCTextInput.Button1.Onclick+=aaaa(object s,evntargs e); void aaa(object s,evntargs e) { s……
貌似只有click事件,没有Onclick

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧