这里是C#的新手。所以我在不同的项目中得到了我的第一堂课(Form1)和第二堂课(Class1)。我将Form1添加到Class1的引用中,因为Form1从其GUI中获得了Class1需要从其方法进行计算的数据。问题是,我无法从Class1到Form1的方法得到结果,因为我无法通过循环引用来引用它。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void label3_Click(object sender, EventArgs e)
{
}
public void button1_Click(object sender, EventArgs e)
{
// for getting data from Class1
// ClassLibrary1.Class1 c = new ClassLibrary1.Class1();
// label7.Text = c.GetDate(); }
private void button2_Click(object sender, EventArgs e)
{
}
}
public class Class1
{
private int daysz;
private int GetDate()
{
Activity3_Espiritu.Form1 f = new Activity3_Espiritu.Form1();
daysz = (f.lastDay - f.firstDay).Days;
return daysz;
}
}
有什么方法可以解决这个问题?我已尝试过界面,但即使在网上寻找解决方案后,我也完全不知道如何使用它。
答案 0 :(得分:3)
Class1永远不需要对Form1的引用,而Form1中的代码应调用Class1中的GetDate()
方法,并传入适当的GetDate()
参数进行评估。当GetDate()
返回结果时,您只需将其分配给变量或返回到需要显示它的用户控件(将是Label7
?)。
public void button1_Click(object sender, EventArgs e)
{
var c = new Class1();
var yourResult = c.GetDate(lastDay, firstDay);
label7.Text = yourResult;
}
public int GetDate(DateTime lastDate, DateTime firstDate)
{
return (lastDate - firstDate).Days;
}
答案 1 :(得分:1)
如果您可以更改GetDate
方法的签名,可以尝试以下代码:
public class Class1
{
private int daysz;
private int GetDate(__yourDatType__ lastDay, __yourDatType__ firstDay)
{
daysz = (lastDay - firstDay).Days;
return daysz;
}
}
现在,在button1_Click
写下这个:
ClassLibrary1.Class1 c = new ClassLibrary1.Class1();
label7.Text = c.GetDate(this.lastDay, this.firstDay);