窗体间传值出问题

.Net技术 码拜 5年前 (2016-05-21) 494次浏览
有没有人碰到过这种情况,,窗体间单项数组值传递,明明已经显示接受到数据,,但是在timer中应用时候,,却发现是Null,这是咋回事
例如,在一个窗体里,
public partial class MainInterfaceForm : Form
{   private string Auth;
public  string[] OPCreader;
public MainInterfaceForm(string Authority, string[] MfaceOPCread)
if (MfaceOPCread != null)
{
OPCreader = MfaceOPCread;
}
然后在另一个窗体里实例化传值
MainInterfaceForm mface = new MainInterfaceForm(null, read);  //read为有数据数组
OPCreader 断点调试已经显示有数据了,,但是在MainInterfaceForm 时钟timer应用时却显示Null
求帮助高手帮忙解答,在线等!
解决方案

5

窗体间的传值,建议用委托,理解后很方便。还有在写程序时尽量少用timer,不然会出现假死现象!

5

引用:

有没有人碰到过这种情况,,窗体间单项数组值传递,明明已经显示接受到数据,,但是在timer中应用时候,,却发现是Null,这是咋回事
例如,在一个窗体里,
public partial class MainInterfaceForm : Form
{   private string Auth;
public  string[] OPCreader;
public MainInterfaceForm(string Authority, string[] MfaceOPCread)
if (MfaceOPCread != null)
{
OPCreader = MfaceOPCread;
}
然后在另一个窗体里实例化传值
MainInterfaceForm mface = new MainInterfaceForm(null, read);  //read为有数据数组
OPCreader 断点调试已经显示有数据了,,但是在MainInterfaceForm 时钟timer应用时却显示Null
求帮助高手帮忙解答,在线等!

这样传是没问题的,但是从一个数组赋值给另外一个数组是引用传递, 也就是说假如第一个数组的值变了,第二个数组的值也会发生变化的。

20

不是你骗本人,而是你骗你本人
你的做法就相当于

        static void Main(string[] args)
        {
            var a = new You();
            var b = new You(new string[] { "abc", "123" });
            Console.WriteLine(b.p[0]);
            Console.WriteLine(a.p[0]); //异常:未将对象引用设置到对象的实例
        }
        class You
        {
            public string[] p;
            public You(string[] ar = null)
            {
                if (ar != null) p = ar;
            }
        }

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明窗体间传值出问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)