国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

詳解WinForm窗體間交互的方法

開發 后端
本文將為大家介紹的是WinForm窗體之間的數據交互等問題,包括自定義一個構造函數等等問題。

實際上過去我也寫過類似的主題,這里把各種方法總結一下,內容的確基礎了一些,所以這篇文章是寫給剛剛學習C#的同行們的,希望對大家有些幫助吧!很抱歉,這篇文章沒有詭異的bug來勾起大家的興趣,但是下篇文章我會努力寫些有趣的主題的

在窗體間傳遞數據的方法比較多:

1,在子窗體中自定義一個構造函數,參數類型是主窗體,當要顯示子窗體的時候,就用這個構造函數來實例化子窗體,然后把this指針傳進去,說起來太抽象了,我大概一寫大家應該就明白了:

  1. public class frmMain:Form  
  2.   {  
  3.        ...  
  4.        frmControl controlForm=new frmControl(this);  
  5.        controlForm.Show();  
  6.    }  
  7.    public class frmControl:Form  //子窗體,用來控制主窗體的某些顯示!  
  8.    {  
  9.         private frmMain mainForm;  
  10.         public frmControl(frmMain mainForm)  
  11.         {  
  12.              this.mainForm=mainForm;  
  13.          }  
  14.          private void button1_Click(object sender,EventArgs e)  
  15.               {                        
  16. frmMain.textBox1.Text=this.textBox1.Text;  //把子窗體的文本框值傳遞給主窗體的文本框!  
  17.               }  
  18.     } 

2,我個人感覺上面的方法不是很好,雖然實現起來很簡單,只是想改變窗體的標題文本,就把整個主窗體的引用都傳遞給子窗體,這樣的方式不是很幽雅,我們用接口來改進上面的方法,這樣可以限制暴露給子窗體的功能,降低窗體之間的耦合度:

  1. public interface IChangeTitle:  
  2.  {  
  3.       void ChangeTitle(string title);  
  4.   }  
  5.  public class frmMain:Form,IChangeTitle  
  6.  {  
  7.       ...  
  8.       frmControl controlForm=new frmControl(this);  
  9.       controlForm.Show();  
  10.       public void ChangeTitle(string title)  
  11.       {  
  12.            this.Text=title;  
  13.        }          
  14.   }  
  15.   public class frmControl:Form  //子窗體,用來控制主窗體的某些顯示!  
  16.   {  
  17.        private IChangeTitle ichangeTitle;  
  18.        public frmControl(IChangeTitle ichangeTitle)  
  19.        {  
  20.             this.ichangeTitle=ichangeTitle;  
  21.         }  
  22.         private void button1_Click(object sender,EventArgs e)  
  23.              {  
  24. ichangeTitle.ChangeTitle(this.textBox1.Text);  //通過接口來調用方法  
  25.  
  26.              }  
  27.  
  28.    } 

3,為了進一步降低窗體之間的耦合度,我們可以用委托來實現這個需求:

  1. public partial class ChildForm : Form  
  2.    {  
  3.  public delegate void TitleChangedHandler(string title);  
  4.   public TitleChangedEventHandler TitleChanged;  
  5.    public ChildForm()  
  6.        {  
  7.            InitializeComponent();  
  8.        }  
  9.  
  10.          
  11.   private void btn_Ok_Click(object sender, EventArgs e)  
  12.        {              
  13.            if (TitleChanged != null)  
  14.                TitleChanged("Test Title"); //委托調用  
  15.              
  16.        }  
  17.    } 

主窗體給委托變量賦值就可以了:

  1. public partial class MainForm : Form  
  2.     {  
  3.         private ChildForm loginForm = new ChildForm();   
  4.         public MainForm()  
  5.         {  
  6.             InitializeComponent();  
  7. loginForm.TitleChanged = new ChildForm.TitleChangedEventHandler(FormTitleChanged);  
  8.         }  
  9.  
  10.         protected void FormTitleChanged(string title)  
  11.         {  
  12.             this.Text = title;  
  13.         }  
  14.  
  15.         private void button1_Click(object sender, EventArgs e)  
  16.         {  
  17.             loginForm.Show();  
  18.         }  
  19.     } 

4,也可以在子窗體中定義一個自定義的事件,然后自定義一個事件參數,用來傳遞你想傳遞的一些信息:

  1. public partial class ChildForm : Form  
  2.     {  
  3.         public class TitleChangedEventArgs : EventArgs //事件參數類  
  4.         {  
  5.             private string title = "";  
  6.             public string Title  
  7.             {  
  8.                 get 
  9.                 {  
  10.                     return title;  
  11.                 }  
  12.                 set 
  13.                 {  
  14.                     title = value;  
  15.                 }  
  16.             }  
  17.         }  
  18. public delegate void TitleChangedEventHandler(object sender, TitleChangedEventArgs e);  
  19.         public event TitleChangedEventHandler TitleChanged;  
  20.         public ChildForm()  
  21.         {  
  22.             InitializeComponent();  
  23.         }  
  24.  
  25.           
  26.         private void btn_Ok_Click(object sender, EventArgs e)  
  27.         {  
  28.             TitleChangedEventArgs e1=new TitleChangedEventArgs();  
  29.             e1.Title="Login sucessed";  
  30.             OnTitleChanged(e1);//觸發事件  
  31.               
  32.         }  
  33. protected virtual void OnTitleChanged(TitleChangedEventArgs e)   //觸發事件的方法  
  34.         {  
  35.             if (TitleChanged != null)  
  36.                 TitleChanged(this, e);  
  37.         }  
  38.     } 

主窗體訂閱這個事件就可以了:

  1. public partial class MainForm : Form  
  2.    {  
  3.        private ChildForm loginForm = new ChildForm();   
  4.        public MainForm()  
  5.        {  
  6.            InitializeComponent();  
  7. loginForm.TitleChanged += new ChildForm.TitleChangedEventHandler(FormTitleChanged);  
  8.        }  
  9.  
  10.  protected void FormTitleChanged(object sender, ChildForm.TitleChangedEventArgs e)  
  11.        {  
  12.            this.Text = e.Title;  
  13.        }  
  14.  
  15.        private void button1_Click(object sender, EventArgs e)  
  16.        {  
  17.            loginForm.Show();  
  18.        }  
  19.    } 

原文標題:WinForm窗體之間交互的一些方法

鏈接:http://www.cnblogs.com/xuefeng1982/archive/2010/06/11/1756620.html

[[11967]]

【編輯推薦】

  1. 探討WPF開發工作站相關知識
  2. WPF Dispatcher在界面操作中作用體現
  3. 實現WPF淡入效果方式技巧分享
  4. WPF Listbox生成方式介紹
  5. WPF邊框不同形式的設置技巧   

 

責任編輯:彭凡 來源: 博客園
相關推薦

2009-09-07 03:44:50

C#窗體間傳值

2024-07-03 08:21:56

MDI窗體界面

2009-09-01 18:16:41

C#窗體間通訊

2009-10-13 11:32:19

Winform假框架

2009-12-31 16:56:40

Silverlight

2009-10-14 15:11:28

VB6.0實現多窗體交

2009-11-30 08:38:35

WinForm

2009-09-07 06:48:13

C#透明窗體

2009-07-24 11:29:33

WinForm表單窗體

2025-02-17 03:00:00

WinForm應用程序線程

2009-08-26 11:07:36

C#打印窗體

2009-09-07 05:10:52

C#模式窗體

2024-08-20 08:05:14

WinformWndProc?Windows

2009-04-13 09:23:41

.NET 2.0Winform經驗

2024-10-24 17:13:55

WinformUI多線程

2010-08-31 09:46:23

C#

2009-10-10 14:54:44

treeView1控件

2009-11-26 14:37:37

Visual Stud

2011-06-30 17:21:56

Qt 線程 共享

2025-02-10 07:05:00

WinFormUI線程
點贊
收藏

51CTO技術棧公眾號

欧美一区二区三区日韩| 国产亚洲精品一区二区| 91精品麻豆日日躁夜夜躁| 国产一区二区av| 成人免费直播live| 91.com在线| 一级视频在线观看| 成年人在线视频| 中文字幕在线视频观看| 日韩av首页| 午夜性色一区二区三区免费视频| 国产一区二区精品久久99| 久久99国产精品免费| 日韩欧中文字幕| 久久久久国色av免费观看性色| 成人美女免费网站视频| 97久久国产亚洲精品超碰热| 精品一二三区视频| 少妇久久久久| 99国产精品99久久久久久| 这里只有精品视频在线观看| 日韩av手机在线观看| 亚洲日本japanese丝袜| 精品久久免费| 午夜dv内射一区二区| 国产视频中文字幕在线观看| 成人啊v在线| 在线伊人免费视频| 丝袜美腿一区| 黑人精品欧美一区二区蜜桃| 91久久精品日日躁夜夜躁欧美| 欧美成人黑人xx视频免费观看| 亚洲国产午夜伦理片大全在线观看网站 | 成人91免费视频| 奇米影音第四色| 四虎成人精品一区二区免费网站| 狂野欧美一区| 国产欧美日韩精品a在线观看| 亚洲第一视频在线观看| 欧美久久久久久久| 永久av在线| 欧美成人激情| 国产成人一区二区精品非洲| 亚洲精品国产拍免费91在线| 精品婷婷色一区二区三区蜜桃| 精品国产一区二区三区四区阿崩| 国产精品亲子伦av一区二区三区| 成人高清视频在线观看| 91精品在线观看入口| 欧美精品亚洲精品| 91在线直播| 日韩电影在线一区| 亚洲人成人99网站| 爱福利视频一区二区| 激情开心成人网| 成人一区二区三区视频在线观看 | 精品中文字幕在线| 亚洲国产日韩欧美在线观看| 三上悠亚激情av一区二区三区| 日韩精品免费| 欧美日韩精品一区二区天天拍小说 | 91高清在线观看视频| 色综合综合色| 精品久久久久久久久久ntr影视| 全球成人中文在线| 天堂а在线中文在线无限看推荐| 日本成人中文| 97久久精品人人做人人爽| 欧美成人免费大片| 女人黄色片免费| 国产精品试看| 日韩在线视频免费观看高清中文| 99热一区二区| 国产一区日韩欧美| 亚洲国产精品专区久久| 激情五月亚洲色图| 欧美午夜一区| 国产亚洲精品美女久久久| the porn av| 黄色欧美日韩| 中文字幕亚洲无线码a| 在线免费福利| 成人手机电影网| 国产精品日韩一区| 天然素人一区二区视频| 色综合久久中文综合久久97| 91大学生片黄在线观看| 色喇叭免费久久综合| 亚洲网站在线观看| 涩爱av在线播放一区二区| 国产精品538一区二区在线| 久久久久久久久久久久av| 日本福利在线| 亚洲激情六月丁香| 一区二区三区四区久久| 久久九九热re6这里有精品| 日韩小视频在线观看专区| http://嫩草影院| 国产乱码字幕精品高清av| 国产专区欧美专区| 香蕉久久一区| 国产成a人无v码亚洲福利| 国产欧美中文字幕| 精品国产三级| 亚洲精品日韩丝袜精品| 新版中文字幕在线资源| 蜜臀av国产精品久久久久| 国产成人久久久| 91亚洲无吗| 国产一区二区三区在线看| 色综合久久影院| 精品欧美aⅴ在线网站| av7777777| 国产精品99久久久久久有的能看| 狠狠色伊人亚洲综合网站色| 人人狠狠综合久久亚洲婷婷| 色综合久久久888| 妞干网免费在线视频| 欧美人与禽zozo性伦| 免费一级毛片在线观看| 亚洲成人tv网| 中文字幕在线网| 亚洲国产综合色| 91免费日韩| 亚洲女厕所小便bbb| 成人黄色免费电影| 国产欧美一区二区在线观看| 国产a级片网站| 岛国精品在线播放| 一区二区三区四区五区视频| 久久不射网站| 免费av一区二区三区| 国产在线成人| 精品无码久久久久国产| 丝袜亚洲另类丝袜在线| 国产亚洲情侣一区二区无| 欧美黄色精品| 欧美极品少妇xxxxⅹ喷水| 青青青国内视频在线观看软件| 日韩美女一区二区三区| 免费av不卡在线观看| 亚洲偷熟乱区亚洲香蕉av| 久久国产精品美女| 91高潮精品免费porn| 成人性生交大片免费看96| 视频在线观看一区二区| 成人黄色91| 国产精品视频xxxx| 欧美日韩国产免费观看| 亚洲国产精品毛片| 成人av在线网站| 久久久久久久片| 午夜国产精品一区| 国产精品一品| 蜜月aⅴ免费一区二区三区| 欧美调教在线| 国产精品国产三级国产aⅴ浪潮| 九九综合久久| 久久综合中文色婷婷| 精彩视频一区二区三区| 日韩精品综合在线| 亚洲一区二区三区四区的| 午夜av在线播放| 91国语精品自产拍在线观看性色 | 国产精品久久久久久久久免费看| 国产精品av久久久久久麻豆网| 日本成人黄色免费看| 成人av中文字幕| 青草网在线观看| 国产精品1区2区| 制服丝袜影音先锋| 欧美巨大另类极品videosbest| 欧美最新精品| 99电影在线观看| 国产丶欧美丶日本不卡视频| 中文字幕视频在线免费观看| 在线一区二区三区四区五区 | 一本色道久久综合亚洲精品高清 | 国产精品久久久久久久久久东京| 国产一区二区三区久久久久久久久| 18视频在线观看娇喘| 亚洲二区在线观看| 日本欧美不卡| 高清视频一区| 中文字幕乱码日本亚洲一区二区 | 亚洲五月婷婷| 国产一二三在线视频| 色婷婷综合久久久中文字幕| 欧美xxxhd| 久久久久久久国产| 日韩制服丝袜av| 色久视频在线观看| 久久夜色精品国产亚洲aⅴ| 日韩精品电影在线观看| 在线观看免费视频一区二区三区| 国产亚洲精品va在线观看| 一区二区三区四区五区精品视频| 中文字幕桃花岛| 精品国产凹凸成av人网站| 成人在线免费观看网站|