c# winform new出来的控件点击传值给下一个窗体

A_Pi 2017-05-11 12:22:37
第一个窗体用for循环new出来的picturebox 调用数据库里的图片路径 然后每一个picturebox的单击事件都要传值给下一个窗体 急求怎么实现
...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你的窗口可以直接操作“下一个窗口”。例如设置一个全局变量
private Form2 form2;
来保存它的引用,那么在你产生 picturebox 的时候可以注册事件处理过程,来完成调用它的流程,例如
    for (var i = 0; i < 100; i++)
    {
        var pic = new PictureBox();
        this.panel1.Controls.Add(pic);
        pic.Click += (s, arg) =>
        {
            if (this.form2 != null)
                form2.doSomething(pic.Image);
        };
        // pic 进一步初始化操作
    }
这里,当 pic 被点击的时候,就会将 pic 的图片内容作为参数,来调用 form2 的 doSomething 方法。 设计程序时首先搞清楚对象之间的依赖关系。你的 Form 依赖 form2,那么就可以直接访问它,不必使用依赖倒置的方式。如上的这样一个匿名委托方法就是动态注册给 click 事件处理,当事件触发时就去直接访问 form2。
A_Pi 2017-05-11
  • 打赏
  • 举报
回复
引用 1楼以专业开发人员为伍 的回复:
你的窗口可以直接操作“下一个窗口”。例如设置一个全局变量
private Form2 form2;
来保存它的引用,那么在你产生 picturebox 的时候可以注册事件处理过程,来完成调用它的流程,例如
    for (var i = 0; i < 100; i++)
    {
        var pic = new PictureBox();
        this.panel1.Controls.Add(pic);
        pic.Click += (s, arg) =>
        {
            if (this.form2 != null)
                form2.doSomething(pic.Image);
        };
        // pic 进一步初始化操作
    }
这里,当 pic 被点击的时候,就会将 pic 的图片内容作为参数,来调用 form2 的 doSomething 方法。 设计程序时首先搞清楚对象之间的依赖关系。你的 Form 依赖 form2,那么就可以直接访问它,不必使用依赖倒置的方式。如上的这样一个匿名委托方法就是动态注册给 click 事件处理,当事件触发时就去直接访问 form2。
为什么dosomething方法.不出来
正怒月神 2017-05-11
  • 打赏
  • 举报
回复
sp1234给的代码已经很详细了。
  • 打赏
  • 举报
回复
引用 3 楼 qq_38743051 的回复:
请问private Form2 form2是在哪里定义
这里是说明你的所谓的“要传值给下一个窗体”的目标引用,至于如何实现,那是你自己来“胶水粘贴”的。你的窗体想怎么设计,你就用这个字段或者属性来反返回它。
我是三峡移民 2017-05-11
  • 打赏
  • 举报
回复
要写委托,自己网上搜吧
A_Pi 2017-05-11
  • 打赏
  • 举报
回复
引用 1楼以专业开发人员为伍 的回复:
你的窗口可以直接操作“下一个窗口”。例如设置一个全局变量
private Form2 form2;
来保存它的引用,那么在你产生 picturebox 的时候可以注册事件处理过程,来完成调用它的流程,例如
    for (var i = 0; i < 100; i++)
    {
        var pic = new PictureBox();
        this.panel1.Controls.Add(pic);
        pic.Click += (s, arg) =>
        {
            if (this.form2 != null)
                form2.doSomething(pic.Image);
        };
        // pic 进一步初始化操作
    }
这里,当 pic 被点击的时候,就会将 pic 的图片内容作为参数,来调用 form2 的 doSomething 方法。 设计程序时首先搞清楚对象之间的依赖关系。你的 Form 依赖 form2,那么就可以直接访问它,不必使用依赖倒置的方式。如上的这样一个匿名委托方法就是动态注册给 click 事件处理,当事件触发时就去直接访问 form2。
请问private Form2 form2是在哪里定义
xdashewan 2017-05-11
  • 打赏
  • 举报
回复
form上控件都是new出来,没有天生的,自己去看designer.cs

110,532

社区成员

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

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

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