我一直在使用BindingLists來顯示在我的應用程序中運行的線程的對象數據。 這一直很好。C#綁定列表<T>作爲DataGrid的數據源
現在我想在DataGridView
中顯示我自己的對象的屬性,空的BindingList
的綁定成功沒有麻煩。 但是將元素添加到列表時,我得到一個異常的DataGridView
其工作原理的代碼說明必須有列:
BindingList<Thread> threads = new BindingList<Thread>();
dgThreadStates.DataSource = new BindingSource() { DataSource = threads }; //DataGridView
Thread t = new Thread(new ParameterizedThreadStart(handler.handleEntries));
threads.Add(t);
然而,這似乎並沒有工作:
public class Customer
{
public System.Guid GUID;
public string FirstName;
public string MiddleName;
public string LastName;
public string Postcode;
public string HouseNo;
public string StreetName;
public string City;
}
的方法:
BindingList<Customer> savedCustomers = new BindingList<Customer>();
dgvCustomers.DataSource = new BindingSource() { DataSource = savedCustomers }; //DataGridView
savedCustomers.Add(new Customer());
我會得到THI小號例外:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll. Additional Information: No row can be added to a DataGridView control that does not have columns. Columns must be added first.
您在您的客戶類中使用字段,但綁定與屬性不是字段一起使用。 – Ralf
@Ralf你是對的!請張貼這個答案,以便我可以標記它。 –