窗体传值

来源:互联网 发布:会声会影x9激活软件 编辑:程序博客网 时间:2024/06/08 06:56

一、窗体传值最佳实践

1.1、子窗体

    public partial class Mydialog : Form    {        public Mydialog()        {            InitializeComponent();        }        public Mydialog(string param)                //构造函数        {            InitializeComponent();            TextBoxValue = param;        }        public event EventHandler TextBoxChanged;         //定义事件        public string TextBoxValue                  //定义公有传值属性        {            get { return this.textBox1.Text; }            set { this.textBox1.Text = value; }        }        private void textBox1_TextChanged(object sender, EventArgs e)        {            if (TextBoxChanged != null)                TextBoxChanged(this, e);          //当窗体触发事件,传递自身引用                  //或者写为 TextBoxChanged(this, EventArgs.Empty);        }        private void button1_Click(object sender, EventArgs e)        {            this.DialogResult = DialogResult.OK;            this.Close();        }    }

1.2、主窗体

分为模态调用和非模态调用,分别由两个按钮触发。

    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        //模态调用        private void toolStripButton1_Click(object sender, EventArgs e)        {            Mydialog dig = new Mydialog(this.richTextBox1.Text);            if (DialogResult.OK == dig.ShowDialog())                this.richTextBox1.Text = dig.TextBoxValue;        }        //非模态调用        private Mydialog m_dig;        private void toolStripButton2_Click(object sender, EventArgs e)        {            if(m_dig == null)            {                m_dig = new Mydialog(this.richTextBox1.Text);                m_dig.TextBoxChanged += new EventHandler(                    (sender1, e1) =>                    { richTextBox1.Text = m_dig.TextBoxValue; }                    );                //该写法等同于      m_dig.TextBoxChanged += new EventHandler(f2_textchanged);                  //f2_textchanged事件方法后面有定义                m_dig.FormClosed += new FormClosedEventHandler(                    (sender2, e2) =>                    {                        m_dig = null;                    }                    );                m_dig.Show(this);            }            else            {                m_dig.Activate();         //激活窗体并给与焦点            }        }        void f2_textchanged(object sender,EventArgs e)        {            Mydialog f2 = sender as Mydialog;            this.richTextBox1.Text = f2.TextBoxValue;        }    }

	
				
		
原创粉丝点击