可以从一个form中设置数据,从另一个form中取出数据

解决方案 »

  1.   

    搞一个类的public或internal的静态变量就是了。
      

  2.   

    //定义
    public class a
    {
        public static string temp;
        ....
    }//读取
    a.temp = "aaa";
      

  3.   

    这样不行! 我试过的,不信可以去试一下。我指的是同一个程序中,几个不同的Form对同一个数据区域的访问,以达到全局变量的效果。楼上说的在一个form中是可以的,但在不同的form中就不行了
      

  4.   

    一剑飘香的那个方式不行??不会吧。不用static 也可以
    get{}来实现。
      

  5.   


    pubic class test1
    {
    public static string str = "";public void  test1()
    {
        this.str = "this is  test!!"
    }}public class test2 
    {
       string ss = test1.str  // 可以用类直接调用你的静态变量,很方便,
    }
      

  6.   

    用public的函数,或者传递本窗体的实例给其他窗体
    如果是MDI窗体的话貌似两种都用比较好
      

  7.   

    可以写public static 变量名另一个方法是添加一个公共类,把变量定义在里面就都可以调用了
      

  8.   

    我在想可能上面的没有理解我的意思。大家试着从一个win form里面写值,从另一个win form里面取值试试看?我需要的是一个整个程序哪儿都能访问的缓冲区
      

  9.   

    搞一个类的public或internal的静态变量就是了
      

  10.   

    http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx
      

  11.   

    http://dev.csdn.net/article/84/84490.shtm
    看看这篇文章  对你的东西应该有帮助
      

  12.   

    关于上面的朋友提到的在http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx以及http://dev.csdn.net/article/84/84490.shtm中的这片文章,提到:
    使用静态类该方式可以简单的理解为静态变量全局共享,通过下面代码能够比较清楚的理解,先来定义静态类, 
    public static class ParameterSettings 

        //公共静态变量 
        public static string Username = "Zhengzuo"; 
        //私有静态变量 
        private static string userRole = "Administrators"; 
        //私有静态变量 
        private static string password = "http://blog.csdn.net/zhzuo"; 
        //内部属性 
        internal static string UserRole 
        { 
            get { return userRole; } 
        } 
        //公共属性 
        public static string Password 
        { 
            get { return password; } 
            private set { password = value; } 
        } 

    这个静态类的定义我不知道你们自己编译过了没有,为什么我在VS环境中编译对public static class ParameterSettings 这句提示这样的错误:修饰符"static"对该项无效?(另外还有个错误:private set { password = value; } 这句不能这么用)作者提到对这个类的访问
    在需要访问的地方通过以下方式进行, 
    string username = ParameterSettings.Username; 
    string password = ParameterSettings.Password; 
    string userRole = ParameterSettings.UserRole; 
    ParameterSettings.Username = "郑佐";//修改成新用户名 
    我要的就是这样的效果,在哪里都能对这个类的属性值赋值,同时在任何地方都能访问当前的属性值
      

  13.   

    类的定义中不能用static修饰的,是语法错误,只能有public private protected internal ,
    还可以有sealed abstract ,属性的付值,也没有什么private 吧。只能说是password 在定义时用private
      

  14.   

    to:请问在C#中如何定义一个类似于全局的静态对象? 
    利用Singleton(单件)模式可以得到单一实例,并且提供了一个全局访问点,
    例如:public class Singleton
        {
            private Singleton _singleton;        /// <summary>
            /// 私有构造器,这样可以使得客户类不能通过New 构造器实例化类
            /// </summary>
            private Singleton() 
            { 
            
            }
            /// <summary>
            /// 共有静态方法,创建单一实例,此方法非线程安全
            /// </summary>
            /// <returns></returns>
            public static Singleton CreateInstance()
            {
                if (_singleton == null)
                {
                    _singleton = new Singleton();
                }
                return _singleton;
            }
        }    public class TestClient
        {
            public static void Main()
            {
                Singleton s1 = Singleton.CreateInstance();
                Singleton s2 = Singleton.CreateInstance();            if (s1.Equals(s2))
                {
                    Console.WriteLine("s1 equals s2");
                }        }
        }
      

  15.   

    回复的没有调试,有个地方有问题,静态方法访问了非静态字段public class Singleton
        {
            // private Singleton _singleton;  错误的地方
            //应改为 
            private static Singleton _singleton;
            /// <summary>
            /// 私有构造器,这样可以使得客户类不能通过New 构造器实例化类
            /// </summary>
            private Singleton() 
            { 
            
            }
            /// <summary>
            /// 共有静态方法,创建单一实例,此方法非线程安全
            /// </summary>
            /// <returns></returns>
            public static Singleton CreateInstance()
            {
                if (_singleton == null)
                {
                    _singleton = new Singleton();
                }
                return _singleton;
            }
        }    public class TestClient
        {
            public static void Main()
            {
                Singleton s1 = Singleton.CreateInstance();
                Singleton s2 = Singleton.CreateInstance();            if (s1.Equals(s2))
                {
                    Console.WriteLine("s1 equals s2");
                }        }
        }
      

  16.   

    to hnhl(荒凉) :
    能不能帮忙再详细一点,在你的这个类里面加上属性,如何去访问设置这些属性?
      

  17.   

    public class a
    {
        static int a1;
        public static int A1
        {
            get { return a1; }
            set { a1=value; }
        }
        static a()
        {
            a1=3;
        }
    }
    静态构造函数不允许有访问修饰符、不允许有访问修饰符。执行的时间也是不却定的,但能保证你调用其成员时已经执行,且只会执行一次!
    不知是不是楼住想要的答案!
      

  18.   

    http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx以及http://dev.csdn.net/article/84/84490.shtm中的这片文章,提到:
    使用静态类该方式可以简单的理解为静态变量全局共享,通过下面代码能够比较清楚的理解,先来定义静态类, 
    public static class ParameterSettings 

        //公共静态变量 
        public static string Username = "Zhengzuo"; 
        //私有静态变量 
        private static string userRole = "Administrators"; 
        //私有静态变量 
        private static string password = "http://blog.csdn.net/zhzuo"; 
        //内部属性 
        internal static string UserRole 
        { 
            get { return userRole; } 
        } 
        //公共属性 
        public static string Password 
        { 
            get { return password; } 
            private set { password = value; } 
        } 

    为了验证这段代码,我专门安装了VS 2005. 虽然编绎通过了没有问题,但还是没有满足我的要求。写个很简单的例子:public class form1: System.Windows.Forms.Form
    {
        public form1()
        {
          ParameterSettings.Username = "aaaaaaaa";
        }
    }
    public class form1: System.Windows.Forms.Form
    {
        public form1()
        {
          MessageBox.Show(ParameterSettings.Username);
        }
    }
    在form2中ParameterSettings.Username根本就不是form1中设置的值。我需要在一个form中设置值,在其它的form中访问,怎么办?
      

  19.   

    to yiming0755() :那我请教,那你在碰到这种跨窗体取值并且值要常变化,你怎么处理的?
      

  20.   

    怒了。实在不行就把东西写到txt里.然后读.或者写到access数据库里,再读.
      

  21.   

    我试过了,上面的代码可以访问,可能你顺序搞错了,ParameterSettings.Username = "aaaaaaaa"必须在MessageBox.Show(ParameterSettings.Username)前面!
    上面提到 跨窗体取值 可以使用公有属性,如:Form2 f=new Form2();
    f.ShowDialog();
    x=f.aaa;
      

  22.   


    public class login: System.Windows.Forms.Form
    {   public string username=""
        public form1()
        {
         
        }
    //登陆 
       username=textBox1.Text.ToString();
       Form2 f2=new Form2();
        f2.form2Name=username;//username的值传给form2Name,在Form2中可以访问}
    public class Form2: System.Windows.Forms.Form{  public string form2Name;
       public Form2()
         {      }}
      

  23.   

    public class Global
    {
        private static string _StaticTest;    public static string globalVariables
        {
            get{return this._StaticTest;}
            set{this._StaticTest=value;}
        }
    }访问的时候:
    MessageBox.Show(Global.globalVariables);