C Winform中的窗體傳值

2022-02-09 18:09:33 字數 2101 閱讀 5436

關於c#winform窗體之間的傳值有以下幾種做法

1 通過建構函式傳值

2 屬性傳值

以上兩種方法不早詳細介紹。

3 通過事件傳值,委託傳值

首先看一下通過委託傳值吧。

1,建立兩個窗體,分別是form1和form2

在form1中新增乙個button按鈕和乙個textbox控制項,當單擊button控制項的時候new乙個form2物件,並且彈出窗體2

因此給button新增乙個click事件

2,在form1窗體中,新增乙個showtext方法,用於給form1中textbox控制項賦值

3,在專案中新增乙個宣告乙個委託變數,沒有返回值,並且有個引數mydeltext(string str)

4,在form2窗體中新增乙個button按鈕和乙個textbox文字框,當單機button按鈕時,將文字框中的值傳給form1,在form1

中的文字框中顯示

給button新增乙個click事件用於傳值,並且在form2類中新增乙個mydeltext型別的字段

5,在form1單擊事件中,通過宣告的form2物件,呼叫mydeltext型別的字段,給其註冊方法

6,在form2單擊事件中執行委託

**如下

1,準備form1

using

system.data;

using

system.drawing;

using

system.linq;

using

system.text;

using

system.threading.tasks;

using

system.windows.forms;

namespace

窗體之間傳值委託事件

private

void button1_click(object

sender, eventargs e)

//準備方法

public

void showtxt(string

str)

}}

2,宣告乙個沒有返回值,但是有乙個引數的委託型別mydeltext.cs

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.threading.tasks;

namespace

窗體之間傳值委託事件

3,準備form2

using

system;

using

system.collections.generic;

using

system.componentmodel;

using

system.data;

using

system.drawing;

using

system.linq;

using

system.text;

using

system.threading.tasks;

using

system.windows.forms;

namespace

窗體之間傳值委託事件

private

void btn2_click(object

sender, eventargs e)

}}

以上便是通過委託進行窗體之間的傳值,其實最主要的思想就是,把方法當做變數進行傳遞,在form1中給委託註冊方法,在form2中呼叫通過委託變數呼叫方法。

但是上面這種通過委託進行傳值存在的弊端就是,存在多播委託的弊端,還有就是存在盜用問題,在form1中進行註冊完方法,還可以繼續註冊乙個方法,把剛剛註冊的方法

覆蓋掉,或者註冊完方法,在form1中直接執行,因此產生了事件,將在form2中宣告的委託字段,變成public event mydeltext del;就ok了

總結:

C winform窗體傳值總結

1 用屬性傳值 子窗體 private arraylist arrlout public arraylist arrlin 要用pulibc get 主窗體,由它向子窗體傳傳值 using system.collections arraylist引用空間 private arraylist arrl...

C winform窗體傳值總結

1 用屬性傳值 子窗體 private arraylist arrlout public arraylist arrlin 要用pulibc get 主窗體,由它向子窗體傳傳值 using system.collections arraylist引用空間 private arraylist arrl...

(C )WinForm窗體間傳值

1.通過建構函式 特點 傳值是單向的 不可以互相傳值 實現簡單 實現 如下 在窗體form2中 int value1 string value2 public form2 int value1 string value2 在窗體form1中這樣呼叫 new form2 111 222 show 這樣...