表單Form1和Form2 傳值

來源:互聯網
上載者:User
背景:表單Form1和Form2 Form2由Form1開啟(1、模式表單 2、非模式)要求:Form2的TextBox值傳回Form1的TextBox中方法: 情況一:(模式表單)Form1 .ShowDialog()開啟Form2view plaincopy to clipboardprint?Form1:    public partial class Form1 : Form      {          public Form1()          {              InitializeComponent();          }            private void button1_Click(object sender, EventArgs e)          {              Form2 frm = new Form2(this,textBox1.Text);//帶參數構造Form2(此方法該處帶倆參數構造多餘)                       if (frm.ShowDialog() == DialogResult.OK)              {                  this.textBox1.Text += frm.ReturnText;//通過Form2的屬性獲得回傳值              }              frm = null;                        }                Form2:       public partial class Form2 : Form      {          private Form1 pfrm;          private string frm1txt;          public Form2(Form1 parentfrm,string frm1text)          {              InitializeComponent();              pfrm = parentfrm;              frm1txt = frm1text;          }                 public string ReturnText//回傳值的屬性          {              get { return this.frm1txt; }          }            private void button2_Click(object sender, EventArgs e)//給屬性賦值並關閉模式表單Form2          {              frm1txt = this.textBox2.Text;              this.DialogResult = DialogResult.OK;//*必加 模式表單開啟後 只有DialogResult初始化後才可繼續操作 否則值無法傳回              this.Close();//模式表單關閉.close()相當於將表單隱藏 徹底關閉需要用.Dispose()          }            private void button3_Click(object sender, EventArgs e)//關閉          {              this.DialogResult = DialogResult.Cancel;//同*              this.Close();          }   Form1:  public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void button1_Click(object sender, EventArgs e)        {            Form2 frm = new Form2(this,textBox1.Text);//帶參數構造Form2(此方法該處帶倆參數構造多餘)                   if (frm.ShowDialog() == DialogResult.OK)            {                this.textBox1.Text += frm.ReturnText;//通過Form2的屬性獲得回傳值            }            frm = null;                    }            Form2:   public partial class Form2 : Form    {        private Form1 pfrm;        private string frm1txt;        public Form2(Form1 parentfrm,string frm1text)        {            InitializeComponent();            pfrm = parentfrm;            frm1txt = frm1text;        }      public string ReturnText//回傳值的屬性        {            get { return this.frm1txt; }        }          private void button2_Click(object sender, EventArgs e)//給屬性賦值並關閉模式表單Form2        {            frm1txt = this.textBox2.Text;            this.DialogResult = DialogResult.OK;//*必加 模式表單開啟後 只有DialogResult初始化後才可繼續操作 否則值無法傳回            this.Close();//模式表單關閉.close()相當於將表單隱藏 徹底關閉需要用.Dispose()        }        private void button3_Click(object sender, EventArgs e)//關閉        {            this.DialogResult = DialogResult.Cancel;//同*            this.Close();        }   情況二:(非模式表單)Form1 .Show()開啟Form2view plaincopy to clipboardprint?  Form1:     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }           private void button1_Click(object sender, EventArgs e)         {             Form2 frm = new Form2(this,textBox1.Text);    //帶參數構造Form2(此處參數1必須,參數2多餘 參數2作用為將Form1的值傳遞到Form2)             frm.Show();         }         public void ChangeText(string str)//獲得Form2回傳過來的值         {             this.textBox1.Text += str;         }     }          Form2:     public partial class Form2 : Form     {         private Form1 pfrm;         private string frm1txt;         public Form2(Form1 parentfrm,string frm1text)         {             InitializeComponent();             pfrm = parentfrm;             frm1txt = frm1text;         }   }   private void button1_Click(object sender, EventArgs e)     {         pfrm.ChangeText(this.textBox2.Text);//調用Form1的方法     }   private void button4_Click(object sender, EventArgs e)     {         pfrm.textBox1.Text += "sdfsdfsd";//或直接存取Form1的控制項                  } 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.