2014-01-15 4 views
0

제 목표는 타사 컨트롤 2 개를로드하는 시간을 테스트하는 것입니다. 나는 스타트 업 폼과 2 개의 다른 폼을 가지고있다. 내 시작 양식 (StartForm는) 비 정적 필드, 메소드 또는 속성 'SSGvSPREAD.StartForm.dt.get'에 객체 참조가 필요합니다.

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 '

나는 어리석은 짓을하고있을거야 ... 어떤 생각? 미리 감사드립니다. 변수 즉, 그것이 class의 모든 instances에 의해 공유되는, static를 선언 된 경우

+1

정적 필드와 비 정적 필드의 차이점에 대해 얼마나 알고 있습니까? 'Spread' 클래스는 여러분이 호출하고있는'StartForm' 인스턴스에 관해서 어떤 것을 알고 있습니까? –

+1

존 (Jon)은 이미 말했지만, 도움을 청하기 위해 'dt'는 액세스하는 방식으로 액세스하려는 경우 정적이어야합니다. – Abhinav

+0

그것은 바보 같았다는 것을 알고있었습니다. 나는이 공용 속성 dt를 DateTime으로 변환하려고 VB.NET ..에 익숙합니다. VB에서 C# 변환기를 사용하여 '정적'제외했습니다 .. 도와 줘서 고마워! – daved

답변

1

당신은 단지 형식 StartForm.dt, 즉, className.variableName에 변수를 사용할 수 있습니다.

여기 dt를 선언 한 변수는 classinstance 변수이며, 각 instance 사용을 위해 사용할 수 있지만 없습니다.

참고 : 경우에, 당신은 아마는 forms constructor 모두에 인수로 current time을 통과 할 수있는 특정 형식의 instance variable에 저장 및 로딩 시간을 계산하는 데 사용합니다.

관련 문제