C#窗體傳值實(shí)例匯總
本文實(shí)例匯總了C#窗體傳值的方法。分享給大家供大家參考。具體方法如下:
1.靜態(tài)變量傳值,非常簡(jiǎn)單適合簡(jiǎn)單的非實(shí)例的
public static int A;
}
public class form2:Form{
form1.A=1;
}
2.委托傳值
public int A{get;set;}
public static Action<int> setIntADelForClass;//類(lèi)的委托
public Action<int>setIntADel //實(shí)例的委托
public void setintA(int a){
A=a;
}
public void form_load(object sender, EventArgs e){
setIntADelForClass=setIntA;
setIntADel =setIntA;
}
}
public class form2:Form{
public void setFom1IntA{
form1.setIntADelForClass(10);//通過(guò)類(lèi)的委托將form1 的A變量設(shè)置為10
form1 fm1=new form1();
fm1.setIntADel(12);//通過(guò)實(shí)例的委托將新實(shí)例fm1的A變量設(shè)置為12
}
}
3.使用onwer屬性,適合對(duì)話(huà)框之間的傳值
public int A{get;set;}
private void button1_click(object sender, EventArgs e){
A=10;
Form2 fm2=new Form2();
fm2.ShowDialog(this);
}
}
public class Form2:Form{
private void button1_Click(object sender, EventArgs e)
{
Form1 fm = (Form1)this.Owner;
MessageBox.Show(fm.A);//讀Form1的A
fm.A=11;//寫(xiě)Form1的A
}
}
當(dāng)然也可以使用委托繼續(xù)傳值
4.重構(gòu)窗體構(gòu)造函數(shù),初始化的時(shí)候傳值,只適合初始化的適合,不夠方便
5.委托+事件的方法
下面代碼是一個(gè)點(diǎn)擊Form1 button 使Form2的button顯示Form1.textbox內(nèi)容
可以一次性傳很多值,步驟是在窗體A中聲明一個(gè)事件,B窗體中實(shí)現(xiàn)相同方法簽名的方法為事件賦值,B中回調(diào)該方法
Form1的代碼:
public partial class Form1 : Form{
public string B //獲取textbox1的text
{
get { return textBox1.Text; }
set
{
textBox1.Text = value;
}
}
public delegate void EventArgsaccept(object sender, acceptEventArgs e);//聲明一個(gè)事件簽名的委托
public static event EventArgsaccept accept;//相當(dāng)于實(shí)例化一個(gè)事件
private void button1_Click(object sender, EventArgs e)
{
acceptEventArgs ae = new acceptEventArgs();
ae.b = B;
if (accept != null) {
accept(this,ae);
}
}
}
}
public class acceptEventArgs : EventArgs {//封裝EventArgs類(lèi),添加可傳遞的屬性
public string b { get; set; }
}
//------------------->>----------------------------------end code of form1-----------
form2的代碼,實(shí)現(xiàn)一個(gè)相同簽名的方法,如我們的accept的簽名是 方法名(object a,acceptEventArgs b);
public partial class Form2 : Form{
private void Form2_Load(object sender, EventArgs e)
{
Form1.accept += Form1_accept;//為form1的事件賦值,當(dāng)form1執(zhí)行該事件的時(shí)候會(huì)執(zhí)行該方法
}
void Form1_accept(object sender,acceptEventArgs e) {//實(shí)現(xiàn)一個(gè)相同方法簽名的方法
this.button1.Text = e.b;
}
}
//------------------------>>---------------
具體的原理,我想因?yàn)槲惺呛瘮?shù)指針?biāo)钥梢酝ㄟ^(guò)傳值能保存函數(shù)指針的位置?所以可以標(biāo)記相應(yīng)的實(shí)例的,執(zhí)行其他實(shí)例的方法?
還沒(méi)看編譯原理,發(fā)表一下自己看法,不要誤導(dǎo)大眾
6.通過(guò)全局?jǐn)?shù)據(jù)讀寫(xiě),適合登陸驗(yàn)證
AppDomain.CurrentDomain.GetData("user");
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
c# 連接access數(shù)據(jù)庫(kù)config配置
c# 連接access數(shù)據(jù)庫(kù)config配置,需要的朋友可以參考一下2013-02-02
C#創(chuàng)建及訪(fǎng)問(wèn)網(wǎng)絡(luò)硬盤(pán)的實(shí)現(xiàn)
本文主要介紹了C#創(chuàng)建及訪(fǎng)問(wèn)網(wǎng)絡(luò)硬盤(pán)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
C#正則表達(dá)式分解和轉(zhuǎn)換IP地址實(shí)例(C#正則表達(dá)式大全 c#正則表達(dá)式語(yǔ)法)
這是我發(fā)了不少時(shí)間整理的C#的正則表達(dá)式,新手朋友注意一定要手冊(cè)一下哦,這樣可以節(jié)省很多寫(xiě)代碼的時(shí)間。下面進(jìn)行了簡(jiǎn)單總結(jié)2013-12-12
C#調(diào)用SQL語(yǔ)句時(shí)乘號(hào)的用法
這篇文章主要介紹了C#調(diào)用SQL語(yǔ)句時(shí)乘號(hào)的用法,可避免因符號(hào)引起的程序錯(cuò)誤,是C#程序設(shè)計(jì)人員有必要掌握的,需要的朋友可以參考下2014-08-08
C# 封裝HtmlHelper組件:BootstrapHelper
這篇文章主要介紹了C# 封裝HtmlHelper組件之BootstrapHelper 的相關(guān)資料,需要的朋友可以參考下2016-08-08
C#實(shí)現(xiàn)多線(xiàn)程的同步方法實(shí)例分析
這篇文章主要介紹了C#實(shí)現(xiàn)多線(xiàn)程的同步方法,實(shí)例分析了C#線(xiàn)程同步的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04
C#反射調(diào)用拓展類(lèi)方法實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于C#反射調(diào)用拓展類(lèi)方法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01
字符串陣列String[]轉(zhuǎn)換為整型陣列Int[]的實(shí)例
下面小編就為大家分享一篇字符串陣列String[]轉(zhuǎn)換為整型陣列Int[]的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12

