关于winform窗体之间的动态传值问题

问题描述

最近在学winform各位大神我想实现的是这样的功能。在Form1中存放一个集合。这个集合里的元素个数实时更新并且不断的传递给Form2使得form2中的接收数组也实时更新。求各位大神指点

解决方案

解决方案二:
Form1中的集合设置为一个公开的属性,使得在Form2中可以访问到这个集合中的元素
解决方案三:
楼上的方法就可以或者通过Form1中封装一个方法,然后通过委托调用获取
解决方案四:
引用1楼yaotomo的回复:

Form1中的集合设置为一个公开的属性,使得在Form2中可以访问到这个集合中的元素

谢谢么么哒
解决方案五:
引用2楼xunzaosiyecao的回复:

楼上的方法就可以或者通过Form1中封装一个方法,然后通过委托调用获取

谢谢回复委托这里我一直很蒙太菜
解决方案六:
你这种情况,不适合用1楼的,最适合用二楼的方法,毕竟是跨窗体的,使用1楼的全局变量方法,一方面不容易保护数据内容,另一方面,如果你传递的东西越来越多,还存在耗时操作的话,在第二个窗体中可能会卡顿!是用委托,多线程或者异步操作,才是王道!
解决方案七:
引用5楼Trent1985的回复:

你这种情况,不适合用1楼的,最适合用二楼的方法,毕竟是跨窗体的,使用1楼的全局变量方法,一方面不容易保护数据内容,另一方面,如果你传递的东西越来越多,还存在耗时操作的话,在第二个窗体中可能会卡顿!是用委托,多线程或者异步操作,才是王道!

委托你也可以实现实时传递吧。每更新一个就穿过去一个。
解决方案八:
委托当然好用,但是对于初学者比较难。我用的并不是全局变量的方法,而是属性的方法。
解决方案九:
一般跨窗体的界面刷新都是用异步或者多线程实现的,你用的方法虽然可以实现,但是在较多数据量和耗时操作的时候,会出问题,比如form2界面完全卡死等等!还有,多线程和异步的效果是这样的:只要form1的结果值发生了变化,form2就会刷新界面!
解决方案十:
我知道委托很好用,我平时都用委托。

时间: 2024-11-10 00:41:12

关于winform窗体之间的动态传值问题的相关文章

WinForm窗体之间交互介绍

我们在做程序的时候遇到WinForm窗体之间交互的问题,这里把各种方法总结一下,内容比较确基础,适合刚入门的初学者,下面我们就一起来看看吧! 在窗体间传递数据的方法比较多: 1,在子窗体中自定义一个构造函数,参数类型是主窗体,当要显示子窗体的时候,就用这个构造函数来实例化子窗体,然后把this指针传进去,说起来太抽象了,我大概一写大家应该就明白了: publicclassfrmMain:Form { ... frmControlcontrolForm=newfrmControl(this); c

WinForm窗体之间交互的一些方法(转)

实际上过去我也写过类似的主题,这里把各种方法总结一下,内容的确基础了一些,所以这篇文章是写给刚刚学习C#的同行们的,希望对大家有些帮助吧!很抱歉,这篇文章没有诡异的bug来勾起大家的兴趣,但是下篇文章我会努力写些有趣的主题的!在窗体间传递数据的方法比较多:1,在子窗体中自定义一个构造函数,参数类型是主窗体,当要显示子窗体的时候,就用这个构造函数来实例化子窗体,然后把this指针传进去,说起来太抽象了,我大概一写大家应该就明白了:   public class frmMain:Form   {  

asp.net 的winform中窗体之间跳转如何传值

asp教程.net 的winform中窗体之间跳转如何传值 使用attribute  public partial class form1 : form    {    private void button1_click(object sender, eventargs e)    {    form2 frm2 = new form2();    frm2.show(this);    }    }    public partial class form2 : form    {    p

winform中UseControl与winform窗体传值的问题

问题描述 winform中UseControl与winform窗体传值的问题 1.两个窗体Form1,Form2,一个UserControl 2.UserControl上有一个textBox 3.Form1中添加UserControl this.panel2.Controls.Add(control1); 4.想在Form2中获取UserControl上textBox的值,我得到的总是空的? 解决方案 这里应该用动态传值! form1里 public string PassText { get

.net窗体之间传值几种方法详解

1.父窗体传值给子窗体 在父窗体中写: FormChild fc = new FormChil();//新建一个子窗体 fc.ShowDialog(this);//以上两句即实现了子窗体和父窗体的联系 textBox2.Text = fc.Str1;//已实现联系,可以传值 2.子窗体传值给父窗体 有两种方法:  (1) 在子窗体中写:      FormParent fp = (FormParent)this.Owner;//实现联系      textBox1.Text = fp.Str1;

动态-安卓广播机制之间的activity传值

问题描述 安卓广播机制之间的activity传值 使用广播接收者实现两个Activty之间传递数据值的测试(动态创建IntentFiler) 解决方案 两个activity不用再用广播来传吧,如果要只需要在一个里面写一个动态注册的BroadcastReceiver的内部类,再在另外一个activity发送广播即可! 值写在intent.setExtra即好了! 解决方案二: 两个activity不用再用广播来传吧,如果要只需要在一个里面写一个动态注册的BroadcastReceiver的内部类,

Javascript showModalDialog两个窗体之间传值_javascript技巧

Javascript 两个窗体之间传值实现代码javascript中还有一个函数window.showModalDialog也可以打开一个新窗体,不过他打开的是一个模态窗口,那么如何在父窗体和子窗体之间传值呢?我们先看该函数的定义:vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures]) 参数说明: sURL--必选参数,类型:字符串.用来指定对话框要显示的文档的URL. vArguments--可选参数,类型

c#中窗体之间的传值

问题描述 窗体1打开加载学员信息,我用了contextMenuStrip加入快捷菜单'修改'我想实现的效果是选中其中一个学员信息,点击修改,跳出另一个窗体,但是要加载此学员的学号(就是把窗体1的学号传递过来)privatevoid修改ToolStripMenuItem_Click(objectsender,EventArgse){if(this.listView1.SelectedItems.Count>0){Form2frm=newForm2();//将选中的学员学号传递过来frm.Show(

软件开发-C# 多窗口之间动态传值问题

问题描述 C# 多窗口之间动态传值问题 我在做一个串口接收数据并处理的小软件,在主窗口接收并处理后在TextBox上输出,为了直观的显示数据变化,所以再开一个窗口显示波形. 我采用public类传递数值,为了方便测试,我还顺便传了一个随机数,结果每次随机数传过去了,串口的数据没有传过去. 把随机数生成放在接收事件中一样传递不过去. 传递参数的Public类. public int[] tranTest() { Random rd = new Random(); int[] TranArr = n