none
c# 窗口传递工程 状态保持 RRS feed

  • 问题

  • 我在FORM1 中建立了一个串口的连接状态,包括串口号,波特率等等,
    Form1窗口销毁,
    然后进入FORM2
    希望在FORM2 中保持住Form1中串口的连接状态
    如何实现,希望您能有详细的方法,步骤
    2010年2月8日 3:58

答案

  • 你应该把串口的连接状态,包括串口号,波特率保存到一个公共类中的静态属性里面


    努力+方法=成功
    2010年2月8日 3:59
  • 你好!

    我做了一个例子希望对你有帮助。

    /// <summary>
    /// 定义一个类,用于声明串口的详细信息
    /// </summary>
    public class SerialPortOptoins
    {
        public String Code { get; set; } // 串口号
        public String Property1 { get; set; } // 其它属性 1
        public String Property2 { get; set; } // 其它属性 2
        /* 定义更多的属性 */
    
        public SerialPortOptoins(String code, String p1, String p2)
        {
            this.Code = code;
            this.Property1 = p1;
            this.Property2 = p2;
        }
    }
    
    public partial class Form1 : Form
    {
        /// <summary>
        /// 定义一个属性获取获取 form1 的串口信息
        /// </summary>
        public SerialPortOptoins ReturnValue
        {
            get
            {
                return new SerialPortOptoins("你的串口号", "属性1", "属性2");
            }
        }
    }
    
    public partial class Form2 : Form
    {
        public SerialPortOptoins Options { get; set; }
    
        /// <summary>
        /// 构造函数中增加参数用于初始 Options
        /// </summary>
        /// <param name="fOptions"></param>
        public Form2(SerialPortOptoins fOptions)
        {
            this.Options = fOptions;
        }
    }
    
    public partial class Form3 : Form
    {
        public Form3()
        {
            // 如何使用
            using (Form1 f1 = new Form1())
            {
                if (f1.ShowDialog() == DialogResult.OK)
                {
                    // 获取 form1 的返回值
                    SerialPortOptoins options = f1.ReturnValue;
    
                    // 将 form 1 的返回值通过 form 2 的构造函数传给 form2
                    using (Form2 f2 = new Form2(options))
                    {
                        f2.ShowDialog();
                    }
                }
            }
        }
    }


    知识改变命运,奋斗成就人生!
    • 已建议为答案 mazhou 2010年2月8日 10:21
    • 已标记为答案 KeFang Chen 2010年2月9日 1:23
    2010年2月8日 4:33
    版主
  • 你好!
         方式比较多,你可以根据具体的要求来选择:
         1,建立一个静态类,把串口状态保存在公共的静态属性中!
         2,建立一个可序列化的类,把串口状态保存在这个类的实例中,然后序列化!
         3,把串口状态保存在数据库或配置文件中!
         希望对你有帮助!
    周雪峰
    2010年2月8日 7:16
    版主

全部回复

  • 你应该把串口的连接状态,包括串口号,波特率保存到一个公共类中的静态属性里面


    努力+方法=成功
    2010年2月8日 3:59
  • 你好!

    我做了一个例子希望对你有帮助。

    /// <summary>
    /// 定义一个类,用于声明串口的详细信息
    /// </summary>
    public class SerialPortOptoins
    {
        public String Code { get; set; } // 串口号
        public String Property1 { get; set; } // 其它属性 1
        public String Property2 { get; set; } // 其它属性 2
        /* 定义更多的属性 */
    
        public SerialPortOptoins(String code, String p1, String p2)
        {
            this.Code = code;
            this.Property1 = p1;
            this.Property2 = p2;
        }
    }
    
    public partial class Form1 : Form
    {
        /// <summary>
        /// 定义一个属性获取获取 form1 的串口信息
        /// </summary>
        public SerialPortOptoins ReturnValue
        {
            get
            {
                return new SerialPortOptoins("你的串口号", "属性1", "属性2");
            }
        }
    }
    
    public partial class Form2 : Form
    {
        public SerialPortOptoins Options { get; set; }
    
        /// <summary>
        /// 构造函数中增加参数用于初始 Options
        /// </summary>
        /// <param name="fOptions"></param>
        public Form2(SerialPortOptoins fOptions)
        {
            this.Options = fOptions;
        }
    }
    
    public partial class Form3 : Form
    {
        public Form3()
        {
            // 如何使用
            using (Form1 f1 = new Form1())
            {
                if (f1.ShowDialog() == DialogResult.OK)
                {
                    // 获取 form1 的返回值
                    SerialPortOptoins options = f1.ReturnValue;
    
                    // 将 form 1 的返回值通过 form 2 的构造函数传给 form2
                    using (Form2 f2 = new Form2(options))
                    {
                        f2.ShowDialog();
                    }
                }
            }
        }
    }


    知识改变命运,奋斗成就人生!
    • 已建议为答案 mazhou 2010年2月8日 10:21
    • 已标记为答案 KeFang Chen 2010年2月9日 1:23
    2010年2月8日 4:33
    版主
  • 你好!
         方式比较多,你可以根据具体的要求来选择:
         1,建立一个静态类,把串口状态保存在公共的静态属性中!
         2,建立一个可序列化的类,把串口状态保存在这个类的实例中,然后序列化!
         3,把串口状态保存在数据库或配置文件中!
         希望对你有帮助!
    周雪峰
    2010年2月8日 7:16
    版主