C#Winform窗体利用单例子窗体传值父窗体

简述:最近在做C#和HALCON编程,要用到单例的参数由子窗体改变父窗体的值。此例为简化版

       1,点击系统设置

                 

      2,弹出子窗体,在其输入修改参数后点修改按钮

               

      3,点击确定按钮后,关闭子窗体后,主窗体textbox值改变

              

    4,单例程序如下:

复制代码
 public class Student
    {
        //创建单例类,内部静态类方法
        private Student() { }//私有构造函数
        class Nested
        {
            internal static readonly Student instance = new Student();
        }
        public static Student Instance
        {
            get { return Nested.instance; }
        }

        //创建字段和其属性
        private string name;
        public string  Name
        {
            get { return name; }
            set { name = value; }
        }
        private int chinses;

        public int Chinses
        {
            get { return chinses; }
            set { chinses = value; }
        }
        private int math;

        public int Math
        {
            get { return math; }
            set { math = value; }
        }
    }
复制代码

   5,子窗体程序

复制代码
        public Setting()
        {
            InitializeComponent();
        }
        Student stu= Student.Instance; //创建单例类的对

        private void Setting_Load(object sender, EventArgs e)
        {
           
        }

        private void BtnChange_Click(object sender, EventArgs e)
        {
            stu.Name = this.textBoxName.Text;//把子窗体textbox显示值赋给字段的属性
            stu.Chinses = Convert.ToInt32(this.textBoxChinese.Text);
            stu.Math = Convert.ToInt32(this.textBoxMath.Text);
        }
复制代码

   6,父窗体程序

复制代码
Student stu = Student.Instance;//创建单例类
        private void MainForm_Load(object sender, EventArgs e)
        {
            this.tBName.Text = "Weber";//主窗体加载显示内容
            this.tBChinese.Text = Convert.ToString(89);
            this.tBMath.Text = Convert.ToString(90);
        }

        private void ToolStripButton1_Click(object sender, EventArgs e)
        {
            Setting mySetting = new Setting();
            mySetting.ShowDialog();//子窗体弹出

            this.tBName.Text = stu.Name;//字段属性的值赋给textbox值
            this.tBMath.Text = Convert.ToString(stu.Math);
            this.tBChinese.Text = Convert.ToString(stu.Chinses);

        }
复制代码

7,总结

  新手一枚,如有错误请指正!

 

posted @   新凉别处暑  阅读(963)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示