2009-09-30 4 views
0

일반적으로 Visual Studio GUI를 사용하여 폼에 컨트롤을 추가하면 컨트롤을 정의하는 모든 코드가 ".Designer.CS"라는 별도의 부분 클래스 파일에 기록됩니다. 이 부분 클래스에는 대개 각 컨트롤에 대한 비공개 필드가 포함되어 있으므로 디자이너가 아닌 부분 클래스가 컨트롤에 액세스 할 수 있습니다.양식에서 DataGridView에 액세스하는 방법은 무엇입니까?

GroupBox에 DataGridView **를 양식에 추가했습니다. 그러나 디자이너 부분 클래스의 표에 대해 필드가 생성되지 않습니다. 컨트롤을 올바르게 만들고 있지만 내 코드에서 컨트롤에 액세스 할 수있는 필드를 정의하지 않습니다.

컨트롤이 로컬 변수가 아닌 개인 필드를 참조하도록 디자이너 파일을 변경해 보았습니다. 이 작동하지만 아직 Visual Studio 속성 창을 통해 DataGridView의 속성을 편집하려고합니다.이 필드는이 필드를 제거하고 코드를 깨뜨리는 것입니다.

Visual Studio에서 양식의 디자이너 부분 클래스에 DataGridViews 전용 필드가 설정되어 있지 않은 이유가 있습니까? 달리 그리드에 액세스하려면 어떻게해야합니까?

답변

0

DataGridView를 상속하고 일부 변경을 수행 했습니까? 양식은 확실히 DGV를 추가 한 디자이너에 대한 참조를 만들어야하며 왜 이런 일이 일어나지 않을지 확신 할 수 없습니다. 디자이너가 해당 클래스를 재생성 할 때 변경 사항이 깨지기 때문에 디자이너 생성 클래스를 수동으로 변경하면 안됩니다.

당신은 항상 당신의 그룹 상자에 코드를 통해 수동으로 DataGridView를 추가 할 수 있습니다

된 DataGridView DGV = 새로운 DataGridView에을(); dgv.Dock = DockStyle.Fill;

myGroupBox.Controls.Add (dgv);

+0

또한 새 UserControl을 만들려고했는데 DataGridView를 추가 한 다음 해당 UserControl을 GroupBox에 추가 했습니까? – TJF

0

소리가 이상합니다. 어때요 당신의 datagridview 속성을 조정하지, 다시 폼에 추가하십시오. 기본적으로 "datagridview1"이라는 이름이어야합니다 (폼에 하나의 datagridview 만 있다고 가정). 이제 코드로 돌아 가면 intellisense가 "this"라고 입력하면 인식합니까? 그렇다면 Designer 코드에서 어딘가에 있지만 아마 보지 못했을 것입니다. 그냥 생각.

관련 문제