程序分主窗体和登陆窗体,公共类字段的赋值是在登陆窗体中进行,当登陆窗体关闭后需要在主窗体访问已经在登陆窗体进行赋值了的公共类里的字段。(现在的问题是当在主窗体调用公共类的值时,值为空,想问下这是为什么呢?)
公共类如何下(只有一些公共字段,用于保存一些常用的数值,想在主窗体和其它的窗体调用):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MACClass
{
    public class CommonClass
    {
           public string Mac = null;
           public string loginStyle = null;
           public string userName = null;
           public string passWord = null;
           public string systemVersion = null;
           public string computerName = null;
           public string computerUserName = null;
           public string VirtualScreenWitdh = null;
           public string VirtualScreenHeight = null;
    }
}
登陆窗体对公共类进行赋值如下:
public CommonClass common = null;
private void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            try
            {
                common = new CommonClass();
                common.loginStyle = LoginStyle;
                common.passWord = passWord;
                common.userName = userName;
                common.computerName = computerName;
                common.computerUserName = computerUserName;
                common.Mac = MAC;      
             }
         }
private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            this.DialogResult = DialogResult.OK;
            frmMain frm=new frmMain();
            frm.commonClass=common ;
        }
主窗体调用公共类字段代码:
public CommonClass commonClass = null;
private void frmMain_Load(object sender, EventArgs e)
        {
            commonClass = new CommonClass();
            string sssssssssssssssssss = commonClass.Mac;
            MessageBox.Show(sssssssssssssssssss);
        }

解决方案 »

  1.   

    public abstract class CommonClass
      

  2.   

    然后在这个共通类里,你所有的共通方法和变量都用 public static 来修饰在别的页面,你直接通过 CommonClass.变量名 就可以访问了。
      

  3.   

    最关键的一点,这样一来,你就不要在别的页面
    实例化 CommonClass 类了。
    直接通过 CommonClass.变量名 或者 CommonClass.方法 来访问设置
      

  4.   

    很简单 楼主。我这么给你比喻吧 你有2个窗口  2个窗口里 都有string x=""; 这个 变量
     他们之间有关系么? 很明显 没有。这样给你比喻 你有2个窗口  主   和 副   这个2个窗体
    程序启动,
    程序 new 了下 主 窗口。  
    主窗口 new了下 副窗口
    副窗口 new 主窗口你在副窗口里 对 主窗口操作 或者取 主窗口里public的值  都是空的,,
    因为副窗口里new的主窗口 并不是现在有的主窗口。,。。如果你对 对象 的理解深刻的话 就不会出现这个问题了怎么解决。。很简单在副窗口里 public 主  "主";
    在主窗口里 
    副 "副"=new 副;
    副.主=this;
    这样 副窗口就可以操作主窗口了