C# 非静态字段、方法或属性需要对象引用';SSGvSPREAD.StartForm.dt.get';
我的目标是测试2个第三方控件的加载时间。我有一个启动窗体和另外两个窗体,每个窗体上都有一个单独的控件。我的启动窗体(StartForm)创建一个公共DateTime变量C# 非静态字段、方法或属性需要对象引用';SSGvSPREAD.StartForm.dt.get';,c#,winforms,C#,Winforms,我的目标是测试2个第三方控件的加载时间。我有一个启动窗体和另外两个窗体,每个窗体上都有一个单独的控件。我的启动窗体(StartForm)创建一个公共DateTime变量 public partial class StartForm : Form { public DateTime dt { get; set; } public StartForm() { InitializeComponent(); } private void but
public partial class StartForm : Form
{
public DateTime dt { get; set; }
public StartForm()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
this.dt = DateTime.Now;
using (Spread frm = new Spread())
{
frm.ShowDialog();
}
}
private void button1_Click(object sender, EventArgs e)
{
this.dt = DateTime.Now;
using (SSG frm = new SSG())
{
frm.ShowDialog();
}
}
}
现在我想在加载的表单中使用变量dt。这是我使用的代码
private void Spread_Load(object sender, EventArgs e)
{
fpSpread1.OpenExcel(Application.StartupPath + @"\ST_XPCALC_NEW.xlsm");
MessageBox.Show("Loading time: " + DateTime.Now.Subtract(StartForm.dt).TotalMilliseconds + " milliseconds");
}
我在StartForm.dt得到这个错误
非静态字段、方法或属性“SSGvSPREAD.StartForm.dt.get”需要对象引用
我可能在做傻事…有什么想法吗?提前感谢。如果变量声明为
静态
,即类
的所有实例
,则只能使用格式为StartForm.dt
的变量,即className.variableName
您在此处声明的变量dt
,是一个实例
变量,可供每个实例
使用,但不可供类
使用
注意:在您的情况下,您可能可以将
当前时间
作为参数传递给两个表单构造函数
,将其保存在该特定表单的实例变量
,并使用它来计算加载时间。您对静态字段和非静态字段之间的差异了解多少?Spread
类知道您从中调用的StartForm
实例的任何信息吗?Jon已经说过了,但只是为了帮助您,dt
应该是静态的,如果您想以您正在访问的方式访问它。我知道它很愚蠢。。我习惯于VB.NET..尝试将此公共属性dt转换为DateTime。使用vb到c#转换器,它排除了“静态”。。谢谢你的帮助!