2012-07-20 1 views
0

사전을 데이터 원본으로 사용하는 UltraGrid가 있습니다. 사전을 다른 (모달) 양식으로 전달하여 변경된 내용을 부모 양식의 사전에 반영하도록하고 싶습니다.Windows Forms - 개체를 모달 형식으로 전달하여 채우고 다시 전달합니다.

사전에 어린이 양식을 전달할 수 있습니다. 주위를 기분 좋게 해줄 수는 있지만 변경 사항은 상위 양식의 사전에 반영되지 않습니다. 이것은 자식 폼의 사전 매개 변수가 동일한 객체를 참조하지 않기 때문입니다.

저는 ref로 사전에 전달하고 싶지 않습니다. 모달 폼에는 전용 생성자와 공용 정적 메서드 인 ShowForm()이 있습니다. 나는 그것에 인스턴스를 사용하지 않습니다. 누군가 뼈를 던져 주시겠습니까?

+0

당신이 코드의 일부를 보여 주시겠습니까? 하위 폼을 열고 사전을 전달하는 부분. – Steve

+0

응답 해 주셔서 감사합니다, 스티브. 나는 그것을 작동시키고 아래의 해결책을 게시 할 수있었습니다. – lintmouse

답변

0

좋아, 나는이 두 가지를 수행하여 작동시킬 수 있었다 : 사전이 자식 폼에 널 사전을 자식 폼에 전달보다는 초기화하기 전에 초기화되어 있는지 만들기

1).

2) 자식 폼이 닫힐 때 사전을 다시 그리드의 데이터 소스에 할당. 여기

는 부모 폼에 대한 코드는 행동을 보여주고있다 :

private void addColorCodeLabel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
    { 
     var assignedColorCodes = 
      (Dictionary<string, string>)this.subtypeColorCodesUltraGrid.DataSource; 

     //Initialize a null dictionary so that SubtypeColorCodeForm will reference the same dictionary. 
     if (assignedColorCodes == null) 
      assignedColorCodes = new Dictionary<string, string>(); 

     SubtypeColorCodeForm.ShowForm(this, new ImageServerProxy(this.tbImagingUri.Text), 
      assignedColorCodes); 

     //Assign the updated dictionary back to the data source. 
     this.subtypeColorCodesUltraGrid.DataSource = assignedColorCodes; 
    }