2012-06-18 2 views
0

나는 Windows Forms에서 하나의 gridview 있습니다. 나는 checkData.cs, myNames.cs 파일을 가지고 있습니다. 일부 기능을 나눠서 이러한 .cs 파일에 보관했습니다. 모든 파일의 네임 스페이스는 myNameSpace 입니다. Program.cs 파일에는 gridview가 있습니다. checkData.cs에서 해당 gridview에 액세스하려고하면 오류가 The data dataGridView1 doesnot exist in the current context으로 표시됩니다. 그리드보기에 액세스하는 방법? Program.cs에서 나는 checkData.cs 코드gridview 하나의 .cs 파일에서 다른 .cs 파일을 Windows 양식에 액세스하는 방법

namespace myNameSpace 
{ 

    class Program : System.Windows.Forms.Form 
    { 
    private DataGridView dataGridView1; 
    } 
} 

다음 한

나는 다음과 같이이있는 gridview에 액세스하려고 파일.

namespace myNameSpace 
{ 
public BindToGrid() 
{ 
dataGridView1.dataSource = mySource; //assume that mySource has grid bound data 
} 
} 
+0

일부 코드는 여기에 게시하십시오. –

답변

0

가장 간단한 대답은 생성자 매개 변수로 DataGridView을 당신의 checkData.csmyNames.cs 파일의 클래스를 만드는 것입니다. 뭔가 같은 :

public class CheckData 
{ 
    public CheckData(DataGridView Gridview) 
    { 
     _gridView = GridView; 
    } 

    private readonly DataGridView _gridView; 
} 
0

매개 변수로 다른 클래스에 DataGridView 전달과 (. 클래스 C#에서 참조 타입, 그래서 꽤 똑바로 앞으로의)에 대한 참조를 저장

편집 : 고릴라의 답변을 코딩 그것을 보여줍니다.

0

네임 스페이스는 여기에서별로 중요하지 않습니다. checkData.cs 및 myNames.cs의 클래스 및/또는 메서드가 정적인지 여부는 확실하지 않지만 사용자가 양식 개체의 자식으로있는 DataGridView 개체는 개체입니다. 이 객체에 액세스하려면 액세스하려는 클래스 또는 메소드로 전달되어야합니다. 이를 수행하는 한 가지 방법은 그것을 생성자에 전달하는 것입니다. 또 다른 방법은 클래스에 속성을 갖는 것입니다. 개인적으로 나는이 객체에 대한 액세스 권한을 매개 변수로 직접 전달해야하는 메서드를 사용하는 것이 더 유용 할 것이라고 생각합니다.

DataGridView의 데이터에 영향을 미치고 논리를 양식 외부에 유지하려는 경우 논리를 확장 메서드에 넣고 간단히 직접 호출 할 수 있습니다. 귀하의 양식 내에서.

public static class Extensions 
{ 

    public static void CheckNames(this DataGridView source) 
    { 
     // Do your logic here. 
    } 

} 

내가 확장 방법은 분리 매우 편리 할 찾을 :

using MyExtensions; 

... 

private void MyMethod() 
{ 
    this.DataGridView1.CheckNames(); 
} 

는 그런 다음 확장 상기 CheckNames 방법으로 클래스 (Extensions.cs 또는 뭔가를) 작성 : 양식 내부에서

/특정 클래스에 묶여있는 재사용 논리. 여기에 the documentation입니다.

관련 문제