• 静态类和窗体传值


    静态类StaticData.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace 窗体传值
    {
        public class StaticData
        {
            string _name;
    
            public string Name
            {
                get { return _name; }
                set { _name = value; }
            }
    
            int _age;
    
            public int Age
            {
                get { return _age; }
                set { _age = value; }
            }
    
            public void SayHi()
            {
                MessageBox.Show("Hi");
            }
    
            public void Dispose()
            {
    
            }
        }
    }
    View Code

    一般类DynaData.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace 窗体传值
    {
        public class Dynadata
        {
            string _name;
    
            public string Name
            {
                get { return _name; }
                set { _name = value; }
            }
            int age;
    
            public int Age
            {
                get { return age; }
                set { age = value; }
            }
    
            public void sayHi()
            {
                MessageBox.Show("Dynamic Hi");
            }
    
            public void Dispose()
            {
    
            }
        }
    }
    View Code

    Program.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace 窗体传值
    {
        static class Program
        {
            public static StaticData _staticData;
            
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                
                _staticData = new StaticData();
    
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
    
                Dispose();
                
            }
    
            public static void Dispose()
            {
                _staticData.SayHi();//此时_data的值为Form1中两个userControl改变后的值
                _staticData.Dispose();
    
            }
        }
    }

    Form1.cs

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace 窗体传值
    {
        public partial class Form1 : Form
        {
            public StaticData _staticData;
            //
            public Dynadata _dynaData = new Dynadata();
            
            public Form1()
            {
                _dynaData.Name = "dyna cat ";
                _dynaData.Age = 1;
    
                InitializeComponent();
                this.userControl11 = new UserControl1(ref _dynaData);
                this.userControl21 = new UserControl2(ref _dynaData);
                _staticData = Program._staticData;
                _staticData.Name = string.Empty;
                _staticData.Age = 0;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                textBox1.Text = _staticData.Name + "
    ";
                textBox1.Text += _staticData.Age + "
    ";
                _staticData.SayHi();
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                textBox2.Text = _dynaData.Name + "
    ";
                textBox2.Text += _dynaData.Age + "
    ";
                _dynaData.sayHi();
            }
        }
    }

    userControl1.cs

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Windows.Forms;
    
    namespace 窗体传值
    {
        public partial class UserControl1 : UserControl
        {
            public StaticData _staticData;
            //此处需要初始化,否则button1_Click(object sender, EventArgs e)出错
            public Dynadata _dynaData = new Dynadata();
            public UserControl1(ref Dynadata dynaData)
            {
                InitializeComponent();
                _staticData = Program._staticData;
                _dynaData = dynaData;
            }
    
            public UserControl1()
            {
                InitializeComponent();
                _staticData = Program._staticData;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                _staticData.Name = "static cat ";
                _dynaData.Name = "dynamic cat";
                
            }
        }
    }

    userControl2.cs

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace 窗体传值
    {
        public partial class UserControl2 : UserControl
        {
            public StaticData _staticData;
            public Dynadata _dynaData = new Dynadata();
            public UserControl2(ref Dynadata dynaData)
            {
                InitializeComponent();
                _staticData = Program._staticData;
                _dynaData = dynaData;
            }
    
            public UserControl2()
            {
                InitializeComponent();
                _staticData = Program._staticData;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                _staticData.Age = 10;
                _dynaData.Age = 11;
            }
        }
    }

    程序可以有效更改静态类成员的值,userControl中更改的值也会在Program中更新,但是对于动态类,则与预期不符合

  • 相关阅读:
    数学(1.费马定理 2.扩展欧几里德算法 3.莫比乌斯反演)
    hdu 3068 最长回文(manacher入门)
    hdu 2594 Simpsons’ Hidden Talents(KMP入门)
    hdu 1671&& poj 3630 (trie 树应用)
    hdu 1251 统计难题(trie树入门)
    poj 2001 Shortest Prefixes(字典树trie 动态分配内存)
    poj 2406 Power Strings(KMP入门,next函数理解)
    hdu 2087剪花布条 (KMP入门 子串出现的次数和子串个数)
    python-操作json
    测试用例-错误推断法
  • 原文地址:https://www.cnblogs.com/my-cat/p/7986524.html
Copyright © 2020-2023  润新知