本文章主要是个人学习C#的记录,仅供参考,如果对您有所帮助那将锦上添花。
本次的任务是设计两个窗口,第一个窗口作为打开第二个窗口进行乘法计算,将第二个窗口的计算结果输出到第一个窗口上。
实现内容:
窗口一(Form1):
代码:
当点击”打开乘法计算器“时:
private void enter_click_Click(object sender, EventArgs e)
{
multi multi_win = new multi();
multi_win.multiresult += new MultiResult(ShowResult); //调用了其他窗口的内容
multi_win.ShowDialog();
}
以及定义的函数内容:
public void ShowResult(double result)
{
mul_result1.Text = result.ToString();
窗口二
代码:
首先是定义委托
public delegate void MultiResult(double result); //委托
计算部分
public event MultiResult multiresult; //事件
private void multi_click_Click(object sender, EventArgs e)
{
double mul_1, mul_2, result;
mul_1 = double.Parse(mul1.Text);
mul_2 = double.Parse(mul2.Text);
result = mul_1 * mul_2;
multiresult(result);
//this.Close();
}
该任务还是简单的。
但是关键是对委托和事件的学习内容,以下将记录一些对委托和事件的理解。
许多内容出自“火山上的企鹅”的文章。
链接:https://blog.csdn.net/qq_16504163/article/details/104244722
如果要在想将窗口2的内容输出到窗口1中,那么需要做以下的动作:
1、在窗口2中声明一个委托,上述例子中就是:
public delegate void MultiResult(double result); //委托
2、在窗口2中实例化一个委托,作为事件
public event MultiResult multiresult; //事件
注意:声明是在最外层,实例化是在窗口层内,位置可以参照上述例子。
3、在窗口1中添加委托的事件,同样上述内容为:
multi multi_win = new multi();
multi_win.multiresult += new MultiResult(ShowResult); //调用了其他窗口的内容
4、在窗口1中添加委托时间的实现内容(就像函数一样)
public void ShowResult(double result)
{
mul_result1.Text = result.ToString();
}
5、最后在窗口2中调用委托就行啦
private void multi_click_Click(object sender, EventArgs e)
{
double mul_1, mul_2, result;
mul_1 = double.Parse(mul1.Text);
mul_2 = double.Parse(mul2.Text);
result = mul_1 * mul_2;
multiresult(result); //就是这一行
//this.Close();
}