日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

转:c#委托事件实现窗体传值通信

發(fā)布時(shí)間:2023/12/20 C# 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转:c#委托事件实现窗体传值通信 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C#實(shí)現(xiàn)Winform窗口間數(shù)據(jù)交互的三種方法介紹

2010-03-15? 來(lái)自:CNBLOG? 字體大小:【大?中?小】
  • 摘要:本文分別介紹C#實(shí)現(xiàn)Winform窗口間數(shù)據(jù)交互的三種方法:修改子窗體的構(gòu)造函數(shù)、給窗體添加屬性或方法、通過(guò)委托的方法,并提供簡(jiǎn)單的示例代碼供參考。
1、修改子窗體的構(gòu)造函數(shù):

  簡(jiǎn)單地說(shuō)就是通過(guò)修改子窗體Form的構(gòu)造函數(shù),如下所示:

public Frm_Child(string Para1, ArrayList List1, TextBox textBox1, Form. Frm_Main)
  {
      InitializeComponent();
   } 上面的例子中,為子窗體Frm_Child添加了4個(gè)參數(shù),分別是:字符串Para1,字符數(shù)組List1,文本控件textBox1和父窗體Frm_Main,下面簡(jiǎn)單區(qū)分一下它們各自的特點(diǎn):

  <1> 字符串:單向的值傳遞,在子窗體中不能通過(guò)修改此參數(shù)的值來(lái)間接改變父窗體中的數(shù)據(jù)。

  <2> 字符數(shù)組:引用型傳遞,可以通過(guò)將父子窗體中不同的成員變量指向相同的數(shù)組,即可實(shí)現(xiàn)變更一方,同時(shí)更新對(duì)方的數(shù)據(jù)。

  <3> 控件:引用型傳遞,可以通過(guò)修改該控件的數(shù)據(jù)來(lái)直接達(dá)到控制父窗體中該控件數(shù)據(jù)的目的。

  <4> 窗體: 這個(gè)最直接,直接將父窗體傳遞到子窗體中,我們可以方便地在子窗體中修改父窗體中所有授權(quán)為public 的數(shù)據(jù)。

  2、給窗體添加屬性或方法:

  獲取或設(shè)置擁有此窗體的窗體。若要使某窗體歸另一個(gè)窗體所有,請(qǐng)為其 Owner 屬性分配一個(gè)對(duì)將成為所有者的 窗體的引用。當(dāng)一個(gè)窗體歸另一窗體所有時(shí),它便隨著所有者窗體最小化和關(guān)閉。例如,如果 Frm_Child 歸窗體 Frm_Main所有,則關(guān)閉或最小化 Frm_Main 時(shí),也會(huì)關(guān)閉或最小化 Frm_Child。并且附屬窗體從不顯示在其所有者窗體后面。可以將附屬窗體用于查找和替換窗口之類的窗口,當(dāng)選定所有者窗體時(shí),這些窗口不應(yīng)消失。若要確定某父窗體擁有的窗體,請(qǐng)使用OwnedForms屬性。

  我們可以通過(guò)下面的方式來(lái)確定這種從屬的窗體關(guān)系:

Frm_Child form. = new Frm_Child();
   form.Owner = this;
   form.ShowDialog();   或者    Frm_Child form. = new Frm_Child();
   form.ShowDialog(this);   定了從屬關(guān)系以后,我們就可以通過(guò)在Form的load事件中或者通過(guò)定義public的屬性或者方法來(lái)彼此進(jìn)行數(shù)據(jù)修改操作,簡(jiǎn)單操作如下: Frm_Main pareForm. = (Frm_Main)this.Owner;  
   this.listData1 = pareForm.ListData2;

  3、通過(guò)委托的方法:

  相對(duì)以上兩種方法來(lái)說(shuō),這種方法可能較復(fù)雜一些,但基本思路是一樣的,需要修改的地方如下:

  <1> 在Frm_Child.cs中添加委托函數(shù)定義:public delegate void SendFun(string str);

  <2> 在Frm_Child.cs中添加委托示例:public event SendFun SendToParent;

  <3> 在Frm_Child.cs中添加一個(gè)按鈕,并添加其事件如下:

private void button1_Click(object sender, EventArgs e)
     {
       if (Send != null)
      {
           Send(this.textBox1.Text);
       }
      }   <4> 在Frm_Main.cs中添加方法RecvInfo()方法如下: private void RecvInfo (string str)
    {
        textBox1.Text = str;
    }   <5> 在Frm_Main.Designer.cs中的InitializeComponent()方法中添加委托實(shí)例定義: this.myForm.Send += new Example3_Frm_Child. SendFun (RecvInfo);

  通過(guò)上面五步操作,即可達(dá)到Form間的通信的目的。
?

??? 以上介紹的就是C#實(shí)現(xiàn)Winform窗口間數(shù)據(jù)交互的三種方法,希望對(duì)你了解C#實(shí)現(xiàn)Winform窗口間數(shù)據(jù)交互有所幫助。

轉(zhuǎn)載于:https://www.cnblogs.com/bantongshui/p/3196422.html

總結(jié)

以上是生活随笔為你收集整理的转:c#委托事件实现窗体传值通信的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。