2013-02-11 1 views
0

양식 1에서 나는 데이터 그 림보기를 가지고 있으며 사용자가 클라이언트를 편집하려고 할 때 그는 하나를 선택하고 편집 단추를 클릭합니다. 창form1의 색인을 사용하여 form2에 사용하십시오.

새 창에서 나는 텍스트 상자 1에서 클라이언트의 이름이고 텍스트 2는 주소입니다. 여기

는 Form1에

public void Clientesgrid_Cellclick(object sender, DataGridViewCellEventArgs e) 
    { 
     int index = clientesgrid.SelectedRows[0].Index; 
    } 

의 코드 내가 유치원 1에 누락 무언가가있다? 색인을 다른 양식으로 가져 가려면 어떻게해야합니까? 도움.

답변

0

당신은

public void Clientesgrid_Cellclick(object sender, DataGridViewCellEventArgs e) 
{ 
    form2.RowIndex = clientesgrid.SelectedRows[0].Index; 
} 
+0

그 중 한 가지 방법입니다. 또는 소유권 체인이있는 경우 인덱스를 속성으로 설정하고'((form1) Owner) .Index'를 참조 할 수 있습니다. 또는 생성자 매개 변수 'new form2 (Index);'로 포함시킬 수 있습니다. 다른 말로하면 ... form2는 index2에 대한 액세스 권한을 부여하지 않으면 index에 액세스 할 수 없습니다. – Nevyn

0

class Form2 
{ 
    internal int RowIndex; // or internal int RowIndex {get; set;} 
} 

public void Clientesgrid_Cellclick(object sender, DataGridViewCellEventArgs e) 
{ 
    form2.RowIndex = clientesgrid.SelectedRows[0].Index; 
} 
처럼 전화를 Form2에 public 또는 internal 특성/필드를 만들 예를 들어 다음과 같이 두 번째 형태로 어떻게 든 통과해야
1

가장 직접적인 방법은 Form2의 생성자 당신이 Form2의 인스턴스를 만들 때이 같은 보일 수 있습니다 Form1에서 다음

public Form2(int clientID) 
{ 
    // Do something with the clientID 
    // Most likely set it to a property on Form2, or a private member. 
} 

: 당신이이 매개 변수를 원하는 이상적으로

var index = clientesgrid.SelectedRows[0].Index; 
var editForm = new Form2(index); 
editForm.Show(); 

을 그래서 Form2에서이 같은이있을 것이다 클라이언트의 식별자가 이 아니고 인 경우 DataGridView의 행 인덱스는 Form1입니다. 그 이유는 단지 행 인덱스이고 행에 필요한 데이터가 포함되어 있다면 Form2에 필요한 데이터가 없기 때문에 더 많은 데이터를 얻기 위해 여전히 Form1에 종속되어 있기 때문입니다.

가능한 한 의존성을 줄입니다. Form2의 인스턴스는 해당 작업을 수행하는 데 필요한 생성자를 필요로합니다. 그런 다음 다른 양식은 필요한 것을 제공 할 수있는 한 Form2의 인스턴스를 작성할 수 있습니다.

하면 Form2항상 요구 사항이 식별자에, 당신은 그것의 매개 변수가없는 생성자는 개인 확인하기 위해 추가 조치를 취할 수 있습니다이 필요한 가치를 제공하지 않고 Form2의 인스턴스를 생성에서 다른 형태를 방지 할 수

private Form2() { } 

필요합니다.

관련 문제