新建一个新的类文件:PublicData.cs
共享类存在存放在该文件中:
public class PublicDataManage //共享类
{
  private static PublicDataManage m_dataManage = null;
  /*
   *在这里定义你所需要共用的变量例:
   *public DataSet ds = null;
  */ 
  private PublicDataManage()
  {
  }
  public static PublicDataManage CreateInstance()
  {
    if(m_dataManage == null)
    {
      m_dataManage = new PublicDataManage(); 
    }
    return m_dataManage;
  }}//在winForm中的调用:
private PublicDataManage m_publicData = null;
private DataSet ds = null;m_publicData = PublicDataManage.CreateInstance();
ds = m_publicData.ds;
不管多少个WinForm调用以上代码所得到的变量ds始终是一个实例,这样就达到了变量共享
的目的。
以上是采用了设计模式中的单一实例的思想实现的。

解决方案 »

  1.   

    wandao() :谢谢。
    我要想在这个类里给ds赋值,和增加方法怎么做呢?
      

  2.   

    既然变量能够共享,那么方法当然也可以共享:
    public class PublicDataManage //共享类
    {
      private static PublicDataManage m_dataManage = null;
      /*
       *在这里定义你所需要共用的变量例:
       *public DataSet ds = null;
      */ 
       //给变量读写方法的共享:
      private DataSet m_ds = null;
      public DataSet ds  //采用属性的方式进行读写
      {
        set{m_ds = value;}
        get{return m_ds;}
      }
      //下面是采用函数方法进行读写
      public void SetDS(DataSet ds)
      {  
         m_ds = ds;
      }
      public DataSet GetDS()
      {
        return m_ds;
      }  private PublicDataManage()
      {
      }
      public static PublicDataManage CreateInstance()
      {
        if(m_dataManage == null)
        {
          m_dataManage = new PublicDataManage(); 
        }
        return m_dataManage;
      }}//在winForm中的调用:
    private PublicDataManage m_publicData = null;
    private DataSet ds = null;m_publicData = PublicDataManage.CreateInstance();//如果是采用属性的方式进行读写的话:
    ds = m_publicData.ds; //读
    m_publicData.ds = ds ;//写
    //如果是采用函数方法的方式进行读写的话:
    ds = m_publicData.GetDS(); //读
    m_publicData.SetDS(ds); //写
      

  3.   

    写一个自定义类,在这个类中定义你的全局函数和变量,注意,要定义为公共的(public)、静态的(static)。这样你就可以在多个不同的form中调用它们,而且还能保证值的正确。例:
    公共类: myPubCls.cs
    using System;
    namespace My_App
    {

    public class  myPubCls
    {
    //公共属性
    public static String userName;
    public static String userPassWord;

    //公共方法
    public static String getUserName()
    {
    return userName;
    }
    public static String getUserPassWord()
    {
    return userPassWord;
    }
    }
    }调用类:
    using System;
    namespace My_App
    {
    public class myMainCls
    {
     
    public void myExec()

    //属性调用
    myPubCls.userName="rocky";
    myPubCls.userPassWord="123456"; //方法调用
    String name,passWD;
    name=myPubCls.getUserName();
    passWD=myPubCls.getUserPassWord();
    }
    }
    }
      

  4.   

    我因为很多地方用到SqlConnention,所以想把SqlConnention作为全局变量写在类里,并且在公共类里给它的ConnectionString赋值,然后在WinForm里面得到实例,直接Open()。
    我这样想法有问题吗,我按照上面的试了,可是没弄成。