1、委託
兩個表單,表單很簡單,只實現改變顏色功能,一看就會:
代碼如下,只貼按鈕事件代碼:
開啟Form2按鈕事件
private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.ChangeColor += new ChangeFormColor(frm2_ChangeColor); frm2.Show(); } void frm2_ChangeColor(bool topmost) { this.BackColor = Color.LightBlue; this.Text = "改變成功!"; }
改變Form1顏色按鈕
//定義一個委託 public delegate void ChangeFormColor(bool topmost); //給一個事件 public event ChangeFormColor ChangeColor; private void button1_Click(object sender, EventArgs e) { ChangeColor(true); this.Close(); }
2、先來看
修改之後按Confirm,關閉form2,自動重新整理form1,思路是這樣:在form1上面查詢顯示到datagridview,右鍵選擇修改,彈出模式表單form2,修改,關閉,自動重新整理form1。
Form1 表單代碼
//添加到修改按鈕裡面,彈出模式表單Form2,進行修改 Form2 form2 = new Form2(); form2.Owner = this; form2.ShowDialog();
Confirm按鈕代碼
if (//你的修改方法) { MessageBox.Show("修改成功!"); //把擁有Form2的表單強制轉換為Form1,然後賦值給Form1表單類型的變數form1 Form1 form1 = (Form1)this.Owner; //注意下面select()方法,是form1裡面的一個查詢方法,作用等於refresh,但refresh不行,無所謂,調用這個方法來重新整理一樣的。 form1.select(); Close(); }
3、第三種有點小麻煩,但也不錯(如果修改的資料單一,比較少的話)
兩個表單的如下(介面很簡單,主要是示範功能,但Form2裡用一個按鈕進行資料提交,關閉表單就不行,必須要寫到FormClosed事件裡面,鬱悶......誰有更好的方法,一起交流交流):
單擊choose 彈出form2,選擇完性別之後,關閉表單,資料傳遞到form1sex框中,代碼少,全貼出來吧
Form1 表單全部代碼
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace test{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); if (frm2.ShowDialog()==DialogResult.OK) { //用模式表單彈出來,給form2裡面public屬性的strSex賦值 textBox2.Text = frm2.strSex; frm2 = null; //清空 } } }}
Form2 表單全部代碼
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace test{ public partial class Form2 : Form { public Form2() { InitializeComponent(); } //定義一個private屬性str用於儲存sex,用到什麼屬性,就自己加什麼屬性,完了把游標停到屬性str這裡,按Ctrl+R,E,自動封裝 private string str; public string strSex //這裡自動封裝後應該是Str,我改了改名字,表糾結這個 { get { return str; } set { str = value; } } private void Form2_FormClosed(object sender, FormClosedEventArgs e) { //賦值完之後關閉表單 this.strSex = comboBox1.SelectedText; this.DialogResult = DialogResult.OK; } }}
OK,寫完了,這個主要是給自己做做筆記,便於以後翻閱,各位看就看,不看就閃,如果有什麼不對的地方,還請指出來,不要JJWW,鄙視這種人!我也是初學者,誰不是從這裡過來的!!!
轉載請註明出處:http://www.cnblogs.com/xw-yanger/archive/2012/06/26/2563562.html
有問題就發郵件:Xw_yanger@163.com
大家共同進步!