程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c# winform 子父窗體交互信息

c# winform 子父窗體交互信息

編輯:C#入門知識

第一種利用委托的方法:

    父窗體的方法:

[csharp] 
private void constraintEnd_Click(object sender, EventArgs e) 
   { 
       //if (MessageBox.Show("即將強制將本爐次數據歸檔!", "警告", MessageBoxButtons.OKCancel) == DialogResult.OK)//2012.4.11修改 
       //{ 
       CCMEnd ccmend = new CCMEnd(curHeatInfo.Rows[0]["heatid"].ToString(), label337.Text.ToString().Trim()); 
       ccmend.resultEvent += new CCMEnd.CalculateDelegate(Endccm); 
       ccmend.Show(this); 
   } 
 
   public void Endccm(string result) 
   { 
       checkProcStatus(); 
       if (result.Equals("1")) 
       { 
           //MessageBox.Show("歸檔成功!", "警告");//2012.4.11修改 
 
           MessageBoxTimeout.Show("歸檔成功!", "警告", 4000); 
       } 
       else 
       { 
           //MessageBox.Show(result, "警告"); 
           MessageBoxTimeout.Show(result, "警告", 4000); 
       } 
       //} 
   } 
    子窗體方法:
[csharp]
public delegate void  CalculateDelegate(string result); 
 
       public event CalculateDelegate resultEvent; 
 
       private void button1_Click(object sender, EventArgs e) 
       { 
           if (!string.IsNullOrEmpty(textBox4.Text) && !string.IsNullOrEmpty(textBox5.Text)) 
           { 
               QT_Service.QT_Service qtService = new UI.QT_Service.QT_Service(); 
               int cut_head = Int16.Parse(textBox4.Text); 
               int cut_trimmed = Int16.Parse(textBox5.Text); 
               result = qtService.EndEAFHeatID(4, string.Format("{0:yyyyMMddHHmmss}", DateTime.Now), cut_head, cut_trimmed); 
               //CalculateDelegate calculate = new CalculateDelegate(((CCMMonitor)this.Owner).Endccm); 
               //calculate(result); 
               this.Close(); 
               resultEvent(result); 
           } 
           else 
           { 
               MessageBox.Show("輸入有誤,請重新輸入!", "警告"); 
           } 
       } 
第二種方法:
父窗口:

[csharp] 
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; 
            
       } 
子窗口:
[csharp] 
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(); 
     }  
[csharp] 
 
第三種方法就是將父窗口的對象當做參數傳到子窗口。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved