• 窗体间传递复杂的数据


    之前在学校的时候没有认真的学习winform的开发,现在就要狂补下了。

    1、构造函数的方法:

    不解释,先看代码:

    public Form2(string msg) {
                InitializeComponent();
                label1.Text = msg;
            }
    

    然后再Form3中就添加一个textbox和一个button

    private void button1_Click(object sender, EventArgs e)
            {
                Form2 f2 = new Form2(textBox1.Text);
                f2.Show();
            }
    

    2、定义一个公共属性,这个我就不测试了,以前是也有用过就是了(只是当时是用公共字段)

    public string Msg{
      get{
      return textbox1.Text();
    }
    }
    

    3、委托与事件传递

    先定义一个类,具体先看代码:

    public delegate void TextChangeHandler(string s);
        public class CallObject 
        {
            public string ResultValue = "";
    
            public event TextChangeHandler SelTextChanged;
            public void ChangeSelText(string s) {
                if (SelTextChanged != null) {
                    SelTextChanged(s);
                }
            }
        }
    

    然后再子窗体添加一个构造函数,以接受结果对象:

    public Form2(CallObject cov) : this() {
                this.co = cov;
            }
    

    第三步:在父窗体创建子窗体,并订阅cResult事件:

     private void button1_Click(object sender, EventArgs e)
            {
                CallObject co = new CallObject();
                co.SelTextChanged+=new TextChangeHandler(EventResultChanged);
    
                Form2 f2 = new Form2(co);
                f2.ShowDialog();
                textBox2.Text = "子窗体返回的值是:\r\n" + co.ResultValue;
            }
            private void EventResultChanged(string s) {
                textBox1.Text = s;
            }
    

    最后,在子窗体中改变选择,通过CallBack传递给父窗体

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
            {
                co.ChangeSelText("A");
            }
    
            private void radioButton2_CheckedChanged(object sender, EventArgs e)
            {
                co.ChangeSelText("B");
            }
    
            private void radioButton3_CheckedChanged(object sender, EventArgs e)
            {
                co.ChangeSelText("C");
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                co.ResultValue = textBox1.Text;
                Close();
            }
    

    ok

     

  • 相关阅读:
    Ubuntu在用root账户使用xftp连接时提示拒绝连接
    Ubuntu设置root账户密码
    Ubuntu安装Nginx
    Ubuntu不能上网解决办法
    Ubuntu16.04修改静态ip地址
    Ubuntu下vi编辑器不听话
    thinkpad t420安装debian需要注意的细节
    debian7配置iptables
    debian的甘特图工具
    debian修改ssh端口
  • 原文地址:https://www.cnblogs.com/huaizuo/p/2335377.html
Copyright © 2020-2023  润新知