亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? visual c#實現窗體間數據傳遞(2).txt

?? c# 大量的學習資料。包括ado.net學習筆記
?? TXT
字號:
Visual C#實現窗體間數據傳遞(2)
在上一篇文章中我們曾經指出指出,窗體間數據傳遞第一種情況的解決方法存在一個主要的缺點,就是窗體間傳遞的參數數目是固定的,并且類型也是固定的。這是因為,上文中修改了從命名空間System.Windows.Forms中的Form類派生而得到的Form2類的構造函數,由于構造函數中的參數和類型都是固定的,而主窗體向從窗體傳遞數據,就是通過構造函數中的參數來實現的,所以就造成了上面的那個缺點。其實在這種方法中還存在一個缺點,就是每一次窗體間的數據傳遞,就必須構建一個窗體,并且這種數據傳遞是一次性的。這些缺點對于窗體間傳遞少量數據,一般不會有太大影響,但如果要傳遞大量數據,并且要通過主窗體來實時向從窗體傳遞數據,使用這種方法就勉為其難了。
下面介紹另外一種從主窗體向從窗體傳遞數據的實現方法,這種方法能夠完全解決上面的二個缺點,程序在主窗體中就像操作窗體中加入的組件一樣,靈活的操作從窗體。
此方法實現二個功能:
其一,主窗體能夠實時地向從窗體傳送數據,表現為當更改主窗體中的跟蹤條(TrackBar)的數值,從窗體中定義的一個Label組件就顯示出跟蹤條的當前數值;
其二,從窗體能夠向主窗體提出數據請求,并且能夠獲取主窗體中各組件顯示的數據。程序表現為,當單擊從窗體中的【從Form1中獲取數據】按鈕,程序能夠把主窗體中的二個TextBox組件顯示的內容傳遞到從窗體,并且通過從窗體中的二個TextBox組件分別顯示出來。
第一個功能的實現思路是把從窗體看成是主窗體的一個實例,加入到從窗體中的組件,可以看出是從窗體中定義的一個個變量,由于從窗體中加入的組件的組件缺省定義類型是Private(私有的),所以要想訪問這些組件,必須改變為Public(共有的);而第二個功能的實現思路是通過修改Form2的構造函數,構造函數實現功能是通過Form1類的實例(即為主窗體)來創建并初始化Form2類的實例(即為從窗體)。這樣對于從窗體來說,主窗體則為其一個實例,從而也就可以向主窗體提出數據請求,當然要把需要訪問的各組件定義類型從缺省的Private(私有的)類型修改為Public(共有的)。上述二個功能的實現方法,第二種方法比較復雜,希望各位能夠結合后面的具體實現代碼來理解。
第二種窗體間的數據傳遞情況實現步驟
1.首先創建一個Visual C#的項目文件,項目名稱為【VC#中不同窗體數據傳遞方法02】。
2.把Visual Studio .Net的當前窗口切換到【Form1.cs(設計)】窗口,并從【工具箱】中的【Windows窗體】選項卡中拖入下列組件到【Form1.cs(設計)】窗體中,并執行相應操作:
· 二個TextBox組件,用以輸入向Form2窗體傳送的數據
· 二個Label組件
· 一個TrackBar組件,名稱為trackBar1。
3.把Visual Studio .Net的當前窗口切換到【Form1.cs】窗口,即:Form1.cs的代碼編輯窗口。并用下列代碼替換替代系統產生的InitializeComponent過程。
private void InitializeComponent ( )
{
this.label1 = new System.Windows.Forms.Label ( ) ;
this.label2 = new System.Windows.Forms.Label ( ) ;
this.textBox1 = new System.Windows.Forms.TextBox ( ) ;
this.textBox2 = new System.Windows.Forms.TextBox ( ) ;
this.trackBar1 = new System.Windows.Forms.TrackBar ( ) ;
(  ( System.ComponentModel.ISupportInitialize ) ( this.trackBar1 ) 
).BeginInit ( ) ;
this.SuspendLayout ( ) ;
this.label1.Location = new System.Drawing.Point ( 27 , 41 ) ;
this.label1.Name = "label1" ;
this.label1.TabIndex = 0 ;
this.label1.Text = "歡迎詞:" ;
this.label2.Location = new System.Drawing.Point ( 27 , 83 ) ;
this.label2.Name = "label2" ;
this.label2.TabIndex = 1 ;
this.label2.Text = "提示信息:" ;
this.textBox1.Location = new System.Drawing.Point ( 108 , 38 ) ;
this.textBox1.Name = "textBox1" ;
this.textBox1.TabIndex = 2 ;
this.textBox1.Text = "" ;
this.textBox2.Location = new System.Drawing.Point ( 109 , 78 ) ;
this.textBox2.Name = "textBox2" ;
this.textBox2.TabIndex = 3 ;
this.textBox2.Text = "" ;
this.trackBar1.LargeChange = 1 ;
this.trackBar1.Location = new System.Drawing.Point ( 12 , 182 ) ;
this.trackBar1.Maximum = 100 ;
this.trackBar1.Name = "trackBar1" ;
this.trackBar1.Size = new System.Drawing.Size ( 272 , 42 ) ;
this.trackBar1.TabIndex = 1 ;
this.trackBar1.ValueChanged += new System.EventHandler ( 
this.trackBar1_ValueChanged ) ;
this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;
this.ClientSize = new System.Drawing.Size ( 292 , 273 ) ;
this.Controls.AddRange ( new System.Windows.Forms.Control[] {
  this.trackBar1 ,
  this.textBox2 ,
  this.textBox1 ,
  this.label2 ,
  this.label1 } ) ;
this.MaximizeBox = false ;
this.MinimizeBox = false ;
this.Name = "Form1" ;
this.Text = "Form1" ;
this.Load += new System.EventHandler ( this.Form1_Load ) ;
(  ( System.ComponentModel.ISupportInitialize ) ( this.trackBar1 ) 
).EndInit ( ) ;
this.ResumeLayout ( false ) ;
} 
4.由于從窗體向主窗體提出的數據請求是二個TextBox組件的"Text"屬性值,所以要修改Form1.cs文件中這二個TextBox組件的定義類型,把缺省定義為"private"類型修改為"public"類型,修改后的這二個TextBox組件在Form1.cs中的定義語句如下:
public System.Windows.Forms.TextBox textBox1 ;
public System.Windows.Forms.TextBox textBox2 ; 
在上述代碼后面再添加下面代碼,下面代碼是創建一個Form2類的實例m_Form,即從窗體:
private Form2 m_Form ; 
5.在Form1.cs中的Main函數后,添加下列代碼,下列代碼的功能是實現當修改主窗體中的跟蹤條數值后,從窗體中的label3組件的顯示數值能夠隨之而變化,這樣就實現主窗體實時傳遞數據到從窗體了:
private void trackBar1_ValueChanged ( object sender , System.EventArgs e )
{
m_Form.label3 .Text = trackBar1.Value.ToString ( ) ;
} 
6.在添加完上面代碼,并在其后部,再添加下列代碼,下列代碼的功能是使用Form2類的構造函數,并通過Form1類的實例來創建并初始化Form2類的實例。在項目文件中加入Form2類,并修改Form2類的構造函數工作將在本節的第7到11步驟中完成。
private void Form1_Load ( object sender , System.EventArgs e )
{
m_Form = new Form2 ( this ) ;
//通過主窗體來創建、初始化從窗體
m_Form.Show ( ) ;
//顯示從窗體
} 
7.選擇菜單【項目】|【添加Windows窗體】后,彈出【添加新項-VC#中不同窗體數據傳遞方法01】對話框。在此對話框中的【名稱(N):】文本框中輸入【Form2】后,單擊【打開】按鈕,則在VC#中不同窗體數據傳遞方法01項目中添加了一個新的窗體,名稱為【Form2】。
8.把Visual Studio .Net的當前窗口切換到【Form2.cs(設計)】窗口,并從【工具箱】中的【Windows窗體】選項卡中拖入下列組件到【Form2.cs(設計)】窗體中,并執行相應操作:
· 二個TextBox組件,用以顯示向主窗體請求獲得的數據。
· 二個Label組件。
· 一個Button組件,名稱為button1。
9.把Visual Studio .Net的當前窗口切換到【Form2.cs】窗口,即:Form2.cs的代碼編輯窗口。并用下列代碼替換替代系統產生的InitializeComponent過程。
{
this.textBox1 = new System.Windows.Forms.TextBox ( ) ;
this.textBox2 = new System.Windows.Forms.TextBox ( ) ;
this.label2 = new System.Windows.Forms.Label ( ) ;
this.label1 = new System.Windows.Forms.Label ( ) ;
this.button1 = new System.Windows.Forms.Button ( ) ;
this.label3 = new System.Windows.Forms.Label ( ) ;
this.SuspendLayout ( ) ;
this.textBox1.Location = new System.Drawing.Point ( 95 , 42 ) ;
this.textBox1.Name = "textBox1" ;
this.textBox1.Size = new System.Drawing.Size ( 125 , 21 ) ;
this.textBox1.TabIndex = 2 ;
this.textBox1.Text = "" ;
this.textBox2.Location = new System.Drawing.Point ( 94 , 80 ) ;
this.textBox2.Name = "textBox2" ;
this.textBox2.Size = new System.Drawing.Size ( 127 , 21 ) ;
this.textBox2.TabIndex = 3 ;
this.textBox2.Text = "" ;
this.label2.Location = new System.Drawing.Point ( 27 , 83 ) ;
this.label2.Name = "label2" ;
this.label2.TabIndex = 5 ;
this.label2.Text = "提示信息:" ;
this.label1.Location = new System.Drawing.Point ( 38 , 45 ) ;
this.label1.Name = "label1" ;
this.label1.TabIndex = 4 ;
this.label1.Text = "歡迎詞:" ;
this.button1.Location = new System.Drawing.Point ( 80 , 136 ) ;
this.button1.Name = "button1" ;
this.button1.Size = new System.Drawing.Size ( 135 , 53 ) ;
this.button1.TabIndex = 6 ;
this.button1.Text = "從Form1中獲取數據" ;
this.button1.Click += new System.EventHandler ( this.button1_Click ) ;
this.label3.Location = new System.Drawing.Point ( 102 , 210 ) ;
this.label3.Name = "label3" ;
this.label3.TabIndex = 7 ;
this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;
this.ClientSize = new System.Drawing.Size ( 292 , 273 ) ;
this.Controls.AddRange ( new System.Windows.Forms.Control[] {
  this.label3 ,
  this.button1 ,
  this.textBox2 ,
  this.textBox1 ,
  this.label2 ,
  this.label1 } ) ;
this.MaximizeBox = false ;
this.MinimizeBox = false ;
this.Name = "Form2" ;
this.Text = "Form2" ;
this.ResumeLayout ( false ) ;
} 
10.由于主窗體是把其中的跟蹤條的數值通過從窗體中的label組件來顯示的,所以必須把Form2.cs文件中創建label3組件時定義的"private"類型修改為"public"類型,修改后的創建label3組件的代碼為:
public System.Windows.Forms.Label label3 ; 
由于Form2類的實例是通過Form1類的實例來初始化,所以在創建label3組件后面添加下列代碼,下列代碼是創建一個Form1類的實例,其作用是初始化Form2類的實例(即從窗體):
private Form1 mF_Form ; 
11.修改Form2類的構造函數,具體操作如下,用下列代碼替換Form2.cs中缺省的構造函數:
public Form2 ( Form1 myForm )
{
//
// Windows 窗體設計器支持所必需的
//
InitializeComponent ( ) ;
this.mF_Form  = myForm ;
//
// TODO: 在 InitializeComponent 調用后添加任何構造函數代碼
//
} 
2.在Form2.cs中的Main函數后,添加下列代碼,下列代碼的功能是實現向主窗體提出數據請求,并獲取主窗體的數據,當然這些數據的類型必須修改為"public"類型。
private void button1_Click ( object sender , System.EventArgs e )
{
textBox1.Text = this.mF_Form.textBox1.Text  ;
textBox2.Text = this.mF_Form.textBox2.Text  ;
} 
13.至此,在上述步驟都成功完成,并全部保存后,Visual C#實現窗體間傳遞數據第二種情況的處理方法就全部完成了。此時單擊快捷鍵【F5】就可以運行程序了,當調整Form1窗體的跟蹤條數值,我們會發現Form2窗體中的label3組件顯示的數值也隨之變化;當在Form1窗體的二個TextBox組件中輸入數據后,單擊Form2窗體中的【從Form2中獲取數據】按鈕,則程序能夠成功的從Form1中獲取數據,并通過Form2中對應的TextBox組件顯示出來。圖01就是程序運行后的界面:


 




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影在线免费观看| 91精品国产麻豆国产自产在线 | 欧美一区二区三区四区在线观看| 日韩精品一区二区三区在线观看 | 91久久香蕉国产日韩欧美9色| 欧美精品日韩精品| 日韩理论片中文av| 国产精品一卡二卡| 欧美一区二区三区在| 夜夜精品视频一区二区 | 日本一二三不卡| 亚洲第一二三四区| av在线不卡观看免费观看| 日韩你懂的在线播放| 亚洲大片免费看| 一本久久a久久免费精品不卡| 精品国产乱码久久| 日韩黄色片在线观看| 99国产精品视频免费观看| 日韩色在线观看| 日韩精品亚洲专区| 欧美精品777| 亚洲最新在线观看| 91成人国产精品| 亚洲精品视频免费看| av在线这里只有精品| 樱花草国产18久久久久| 99久精品国产| 亚洲欧美日韩国产手机在线| 波多野结衣精品在线| 国产精品乱人伦中文| 成人综合在线视频| 中文字幕第一区第二区| 国产aⅴ综合色| 亚洲国产精品传媒在线观看| 国产成人av影院| 中文字幕精品—区二区四季| 不卡av在线免费观看| 一区二区中文字幕在线| 91免费观看视频| 一区二区三区四区蜜桃| 欧美三级电影在线看| 日韩成人一区二区| 日韩欧美一区二区免费| 国产一区视频网站| 国产精品毛片高清在线完整版 | 国产精品免费人成网站| av毛片久久久久**hd| 亚洲精品免费在线| 4438x成人网最大色成网站| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩欧美一区二区三区在线| 国产精品性做久久久久久| 国产精品久久久久三级| 91国产免费观看| 日韩av电影免费观看高清完整版| 精品久久久久久久人人人人传媒| 国产成人日日夜夜| 亚洲另类一区二区| 欧美一级高清片| 国产99久久久国产精品潘金网站| 亚洲女人的天堂| 日韩三级视频中文字幕| 国产美女精品在线| 怡红院av一区二区三区| 日韩欧美激情一区| av不卡免费电影| 日韩国产精品大片| 国产精品―色哟哟| 3d动漫精品啪啪1区2区免费| 精品在线观看免费| 亚洲一线二线三线视频| 精品国产乱码久久久久久浪潮| 欧美一级黄色片| 成人免费高清视频| 日韩精彩视频在线观看| 椎名由奈av一区二区三区| 欧美一级日韩免费不卡| 99国产精品久久久| 国产精品中文欧美| 亚洲电影一级黄| 中文字幕在线不卡一区 | 国产精品自在欧美一区| 亚洲在线中文字幕| 亚洲国产精品成人久久综合一区| 欧美高清激情brazzers| 不卡电影免费在线播放一区| 久久丁香综合五月国产三级网站| 亚洲精品国产精品乱码不99| 久久久久久久久99精品| 欧美巨大另类极品videosbest| av一区二区三区在线| 精品一区二区三区欧美| 偷拍日韩校园综合在线| 日韩毛片精品高清免费| 国产区在线观看成人精品| 欧美大度的电影原声| 欧美精品日韩一本| 91传媒视频在线播放| 91免费观看视频| 成人免费视频视频| 国产一区二区三区四区五区入口| 日韩在线卡一卡二| 午夜影院久久久| 亚洲乱码国产乱码精品精可以看 | 成人精品鲁一区一区二区| 精品在线一区二区三区| 免费在线观看一区| 麻豆精品在线看| 久久国产精品露脸对白| 麻豆成人在线观看| 免费成人在线影院| 美女爽到高潮91| 久久精品国内一区二区三区| 午夜免费欧美电影| 三级欧美在线一区| 日韩高清一区二区| 日韩av电影免费观看高清完整版| 丝袜a∨在线一区二区三区不卡| 亚洲国产一区二区视频| 亚洲一区二区在线视频| 亚洲成人综合网站| 日本中文一区二区三区| 日本vs亚洲vs韩国一区三区| 强制捆绑调教一区二区| 久久精品99国产精品日本| 狠狠色狠狠色综合系列| 国产精品一区专区| 粉嫩高潮美女一区二区三区| 99热精品国产| 欧美日韩一区二区三区四区五区| 欧美精品精品一区| 欧美xxxxxxxx| 中文字幕欧美日韩一区| 亚洲欧美激情一区二区| 爽爽淫人综合网网站| 午夜精品一区二区三区电影天堂| 奇米888四色在线精品| 国产精品亚洲视频| 色综合激情五月| 7777精品伊人久久久大香线蕉最新版| 日韩欧美中文字幕一区| 日本一区二区成人| 五月婷婷综合网| 国产精品99久久久久久有的能看 | 狠狠色丁香久久婷婷综合丁香| 国产精品自拍在线| 色呦呦网站一区| 日韩一区二区三区四区| 国产精品嫩草久久久久| 日本中文一区二区三区| 丁香一区二区三区| 欧美揉bbbbb揉bbbbb| 国产欧美一区二区精品忘忧草| 亚洲伦在线观看| 美女在线观看视频一区二区| 成人av资源下载| 欧美一区二区成人6969| 国产精品久久久久久久久免费樱桃 | 亚洲国产va精品久久久不卡综合| 久久福利视频一区二区| 在线一区二区视频| 久久久久久99精品| 午夜私人影院久久久久| 成人app软件下载大全免费| 欧美一区二区成人| 亚洲猫色日本管| 国产xxx精品视频大全| 91精品国产一区二区| 亚洲欧洲日产国码二区| 麻豆精品久久精品色综合| 欧美做爰猛烈大尺度电影无法无天| 26uuu色噜噜精品一区| 亚洲va天堂va国产va久| 色综合久久天天综合网| 国产亚洲欧美中文| 奇米精品一区二区三区在线观看一| 91麻豆国产精品久久| 久久久久成人黄色影片| 裸体在线国模精品偷拍| 欧美日韩激情在线| 成人欧美一区二区三区黑人麻豆| 激情综合网av| 日韩一级免费一区| 亚瑟在线精品视频| 在线观看日产精品| 亚洲啪啪综合av一区二区三区| 国产在线视频一区二区三区| 4438x亚洲最大成人网| 亚洲成人av免费| 欧美视频一区在线| 亚洲在线免费播放| 精品视频一区二区不卡| 亚洲一级二级三级| 欧美午夜精品久久久久久超碰| 亚洲欧洲无码一区二区三区| www.久久精品| 日韩毛片一二三区| 色婷婷综合五月| 亚洲综合免费观看高清完整版在线|