2016-12-21 9 views
2

私はDataGridViewでカスタムusercontrolを作成していますが、このusercontrolをフォームに追加しています。 Form1_Loadイベントでは、ユーザーコントロールのコンストラクタを呼び出してユーザーコントロールを初期化しています。引数としてListを持ち、そのリストがユーザコントロールのDataGridViewDataSourceとして使用されているパラメータ化されたコンストラクタです。Usercontrol data gridviewでデータがロードされていません

問題は次のとおりです。DataGridViewにデータがロードされていません。

どれもそれを理解できます。

フォームのLoadイベントのコードは、

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

ありがとうございました。私はツールボックスからドラッグしてフォームにドロップすると、フォームに追加されると思った。だから私はカスタムのユーザーコントロールを使用するときは、同じメソッドを使用する必要がありますかこれを行うための他の方法があります –

+0

@VipinJacob私はそれを行う方法を示す2つのリンクを入れ、私の編集を確認します –

+0

@VipinJacobあなたは歓迎です –

関連する問題