C#はデリゲートとイベントを使用して、パラメーターの受け渡しを実現します
代表団とイベントについての私の個人的な理解は、代表団は宅配便であり、イベントは手紙であり、イベントのプログラムは手紙の内容であるということです。実現プロセスは、宅配便業者が書面で手紙を郵送すること、つまり、イベントが委託を通じて外部に渡されることです。配達については、イベントが登録されている場所によって異なります。C#プログラムを作成するときは、デリゲートとイベントを使用していくつかのパラメーターを渡す必要があります。デリゲートとイベント受け渡しパラメーターの簡単な使用法の概要を次に示します。
前提:ユーザーコントロールuc1がフォームで作成され、uc1のint型パラメーターをメインフォームに渡してtextBoxに表示する必要があります
ユーザーコントロールuc1:
//声明一个委托
public delegate void PassIntToFrmMainEventHandler(int number);
//声明一个要委托的事件
public event PassIntToFrmMainEventHandler PassIntToFrmMainEvent;
int number = 1000;//这里是随便声明一个int参数
//单击button传递
private void button1_Click(object sender, EventArgs e)
{
PassIntToFrmMainEvent(number);
}
フォームフォーム:
public Form1()
{
InitializeComponent();
//注册事件
uc11.PassIntToFrmMainEvent += new uc1.PassIntToFrmMainEventHandler(ReceiveInt);
}
private void ReceiveInt(int number)
{
//将uc1中传来的Int参数在textBOX中显示
textBox1.Text = number.ToString();
}
注:宣言されたコミッションで渡される必要があるパラメーターのタイプ、つまり、コミッションのタイプは、イベントで渡されるタイプと同じである必要があります。つまり、果物の配達には、衣服ではなく果物をロードする必要があります。
パラメータの委任に加えて、次のようにイベントを直接委任することもできます。
uc1コントロールの場合:
public delegate void UC1TextboxChanageHandler(object sender,TextChangeEventarges e);
public event UC1TextboxChanageHandler TextChangeEvent;
//继承事件基类的类
public class TextChangeEventarges:EventArgs
{
private readonly string txt;
public TextChangeEventarges(string txt)
{
this.txt = txt;
}
public string GetTxt
{
get
{
return txt;
}
}
}
public UCForm1()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (this.TextChangeEvent != null)
{
this.TextChangeEvent(this, new TextChangeEventarges(this.textBox1.Text));
}
}
フォーム:
public FormMain()
{
InitializeComponent();
this.uc1.TextChangeEvent += new UCForm1.UC1TextboxChanageHandler(uc1_TextChangeEvent);
}
void uc1_TextChangeEvent(object sender, UCForm1.TextChangeEventarges e)
{
textBox1.Text = e.GetTxt;
}