一個父表單 ,里面有一個數字,一個子表單,里面有一個按鈕,當我點擊按鈕時,父表單里面的數字加一,用委托應該怎么寫,求各位大佬解答
uj5u.com熱心網友回復:
你確定是LINQ?uj5u.com熱心網友回復:
這個例子是點擊子表單button,父表單追加一條資料。和你要的基本一致https://blog.csdn.net/hanjun0612/article/details/50071539
uj5u.com熱心網友回復:
子表單:public delegate void TransfDelegate(int num);
public partial class Form2 : Form
{
public event TransfDelegate TransfEvent;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
TransfEvent(1);
}
}
主表單:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 form = new Form2();
form.TransfEvent += Form_TransfEvent;
form.ShowDialog();
}
private void Form_TransfEvent(int num)
{
label1.Text = (string.IsNullOrEmpty(label1.Text)?0:int.Parse(label1.Text) + num).ToString();
}
}
uj5u.com熱心網友回復:
可以新建一個類,用靜態變數,class Class1
{
public static int _a;
}
主表單加載時Class1._a = int.Parse(label2.Text);
子表單點擊時 Class1._a++;
主表單加一個時鐘 label2.Text = Class1._a.ToString();
uj5u.com熱心網友回復:
父表單名.變數名++;uj5u.com熱心網友回復:
子表單
Action Do;
private void Btn_Click(object sender, EventArgs e)
{
Do();
}
父表單
private void Btn_Click(object sender, EventArgs e)
{
Form1 form1 = new Form1();
form1.Do = Method;
}
int index = 0;
void Method()
{
index++;
label.Text = index.ToString();
}
uj5u.com熱心網友回復:
實作方法很多,靜態、公有變數或方法、委托等;靜態、public就不說了,#2已經給了委托方法,再給你具體的代碼分析:
子表單:
public delegate void AddValueHandle(your params);//定義一個委托;
public event AddValueHandle AddValueEvent;//定義一個觸發事件;
……
//在需要觸發的時候使用以下代碼,比如在你的子表單button的click事件中:
if(AddValueHandle!=null) AddValueEvent.Invoke(your params);
主表單中:
比如子表單實體為:sonWnd;
sonWnd.AddValueEvent+=delegate{doing something};
或者:
sonWnd.AddValueEvent+=SonWnd_AddValueEvent;
……
private void SettingCtrl_SaveClicked(your params)
{
//dosomething
}
uj5u.com熱心網友回復:
sonWnd.AddValueEvent+=SonWnd_AddValueEvent;
……
private void SonWnd_AddValueEvent(your params)
{
//dosomething
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/120294.html
標籤:C#
上一篇:大佬們棒棒忙
