2016-12-21 1 views
2

DataGridView이있는 사용자 정의 usercontrol을 만들고이 양식을 양식에 추가하고 있습니다. Form1_Load 이벤트에서 나는 사용자 정의 컨트롤의 생성자를 호출하여 사용자 정의 컨트롤을 초기화하려고합니다. 이 매개 변수가있는 생성자는 인수로 List을 가지며 목록은 사용자 정의 컨트롤의 DataGridView에 대해 DataSource으로 사용됩니다.Usercontrol data gridview가 데이터로로드되지 않습니다.

문제는 다음과 같습니다. DataGridView에 데이터가로드되지 않았습니다.

수 있습니다.

폼로드 이벤트의 코드이며,

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace usercontrol 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      List<Car> cars = new List<Car>(); 
      cars.Add(new Car("Ford", "Mustang", "1967")); 
      cars.Add(new Car("Shelby AC", "Cobra", "1965")); 
      cars.Add(new Car("Chevrolet", "Corvette Sting Ray", "1965"));     

      ucSample uc = new ucSample(cars); 
     }    
    } 

    public class Car 
    { 
     private string company; 
     private string color; 
     private string year; 
     public Car(string com,string col,string yea) 
     { 
      this.Company = com; 
      this.Color = col; 
      this.Year = yea; 
     } 

     public string Company { get; set; } 
     public string Color { get; set; } 
     public string Year { get; set; } 
    }  
} 

사용자 정의 컨트롤의 코드는

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Drawing; 
using System.Data; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace usercontrol 
{ 
    public partial class ucSample : UserControl 
    { 
     public ucSample() 
     { 
      InitializeComponent(); 
     } 

     public ucSample(List<Car> listString) 
     { 
      InitializeComponent(); 
      DataSource = listString; 
     } 

     public object DataSource 
     { 
      get { return dgvSample.DataSource; } 
      set { dgvSample.DataSource = value; } 
     } 
    } 
} 
+0

'DataGridView'는'AutoGenerateColumns' 속성이'true'로 설정되어 있습니까? – Equalsk

+0

예 사실로 설정 ... –

답변

3

귀하의 문제는 당신이 추가 클래스의 사용자 지정 컨트롤을 만들 수 있지만 추가 결코입니다 귀하의 양식에 대한 컨트롤을 표시

간단한 라인은 문제를 해결할 것입니다 :

this.Controls.Add(uc); 

생성자에 넣습니다. 또한 물론 수동 방법이

: 즉, 사용자 지정 컨트롤 디스플레이의 Form에 추가되어 있는지 확인합니다 EDIT

여기에 스크린 샷 How do I add my new User Control to the Toolbox or a new Winform? 여기

과 대답은 또 다른 하나입니다 add user control to a form

+0

고마워요. 나는 도구 상자에서 드래그하면서 폼에 droppng하는 동안 폼에 추가 될 것이라고 생각했습니다. 그래서 사용자 정의 사용자 정의 컨트롤을 사용할 때마다 동일한 메소드를 사용해야하거나 다른 방법이 있습니다. –

+0

@VipinJacob 그렇지 않으면 어떻게해야하는지 보여주는 2 개의 링크를 넣습니다. 내 편집을 확인하십시오. –

+0

@VipinJacob 당신은 환영합니다. –