C# 基础知识 (三).主子对话框数值传递
在C# winform編程中,我們經常會遇到不同窗口間需要傳遞數值的問題.比如數據庫的應用,主窗口填寫內容num1,點擊按鈕,在彈出的子窗口顯示對應num1值;或者在子窗口填寫新注冊用戶名信息,在主窗口的dataGridView動態變化顯示著新添加\修改的值;或者在修改信息時,輸入用戶編號”000001”在對應textBox中它的相應數據.顯示如下圖所示:
以上應用都涉及到如何在兩個不同窗口間傳遞數值,并實現動態的更新,下面就介紹我請教同學學到的一種主子對話框數值傳遞的知識,僅供大家學習!它是非常基礎的C# winform知識,但也是非常有用的知識.
一.建立主子對話框
首先建立一個”Windows窗體應用程序”,然后主窗體Form1的界面如下圖,然后添加一個子窗口,右鍵”解決方案”中項目名稱,點擊”添加”,新增一個”Windows窗體應用程序”,其中名稱為”Form2.cs”界面設計如下圖所示:
點擊主窗體中的”提交”按鈕,填寫如下代碼就可實現在主窗體中調用子窗體的應用.它是在實例一個”Sub”的子窗體并顯示.它的運行結果就是當用戶點擊"提交"按鈕時就會彈出子對話框Form2,這就建立了C#主子對話框之間調用的關系.
//點擊"提交"按鈕 private void button1_Click(object sender, EventArgs e) {Form2 Sub = new Form2();Sub.Show(); //顯示子對話框內容 }二.主對話框傳值給子對話框
下面需要介紹如何在子對話框中顯示主對話框中提交的內容,點擊Form2空白處,生成一個Load事件,添加如下代碼,它的具體意思是:在子對話框”Form1”中聲明主對話框”Form2”,然后在Form2的構造函數中給pall賦值pall=f1;同時在載入Load事件中把”Form2”子對話框中的textBox1賦值為主對話框中提交的值.
public partial class Form2 : Form {//實例主窗體Form1 pall = new Form1();//構造函數修改public Form2(Form1 f1){InitializeComponent();pall = f1;}//載入private void Form2_Load(object sender, EventArgs e){textBox1.Text = pall.textBox1.Text;} }上面僅僅修改了子對話框中的內容,同時需要修改主對話框中的內容:
1.把主對話框”Form1”中的textBox1控件設置為public.如下圖所示.因為默認為Private(私有),只能在自己對話框和函數中修改,其他對話框要使用必須設置為public.
2.由于Form2中的構造函數變成publicForm2(Form1f1)擁有參數,所以這里需要修改點擊”提交”按鈕中函數內容如下,把主窗體傳遞給子窗體.
//點擊"提交"按鈕 private void button1_Click(object sender, EventArgs e) {Form2 Sub = new Form2(this);Sub.Show(); //顯示子對話框內容 }?最后的運行結果如下圖所示
三.子對話框值修改主對話框亦更新
實現子對話框中修改值,主對話框中的值也修改的動態更新,這能應用到很多實際項目中,比如主窗體顯示庫存信息,子窗體新加\刪除\修改商品信息時,主窗體也要修改.首先方法同上,建立主子對話框,界面如下:
總結下來就是3個步驟:
1.主窗體Form1中調用子窗體Form2?Form2fn2=newForm2(this);fn2.Show();
2.設置Form1中的textBox1為public公有屬性.同樣的道理,如果想顯示Form1中的其他控件(如dataGridView)、自定義變量或函數,只需要它聲明為public即可子調用.
3.在Form2子對話框中實例一個Form1主對話框,并直接對其主窗口進行修改.需要修改Form2的構造函數來調用Form1的public內容.
其中Form2的代碼如下,與上面中不同的是把主對話框中textBox1賦值即可.
?
public partial class Form2 : Form {Form1 pall = new Form1();public Form2(Form1 f1){InitializeComponent();pall = f1;}//點擊"提交" 內容顯示到主窗口private void button1_Click(object sender, EventArgs e){pall.textBox1.Text = textBox1.Text;} }運行結果如下:
四.總結
最后在主子對話框中傳遞數值的方法還有很多,比如使用Static定義或使用委托,在子窗體的構造函數中添加兩個委托,一個用于調用主窗體給子窗體傳值的方法,一個調用子窗體給主窗體傳值的方法.即可實現兩個窗體間數據交互.在CSDN論壇中我也見到一些這樣的討論http://bbs.csdn.net/topics/320241861
但是我還是認為我上面敘述的這種方法是非常有用的C#基礎知識介紹,我僅僅是提供一種可行的方法,希望該文章能幫助到哪些還不知道如何在主子對話框中傳遞數值的同學朋友,最后還是感謝我的那個同學,他告訴我的這種方法.如果有錯誤或不足之處,見諒!
(By:Eastmount 2013-9-15 夜2點http://blog.csdn.net/eastmount/)?
總結
以上是生活随笔為你收集整理的C# 基础知识 (三).主子对话框数值传递的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 数据库系统中使用GDI+绘制柱状图
- 下一篇: PHP XAMPP配置PHP环境和Apa