绑定组合框BindingList Winforms C#

时间:2016-05-09 16:51:09

标签: c# winforms binding combobox

好的,所以我现在已经多次面对这个问题,但我似乎总是想出来。 这一次,我已经被卡住了,我已经尝试了很多东西,但没有任何工作。

我在客户表单中有combobox个客户。当我创建新客户时,我的combobox没有更新。它仅在关闭并重新打开表单时刷新。 我知道"丑陋和快速"解决方案,但除非我没有其他选择,否则我不想使用它。所以我一直在使用BindingLists,因为这些事件...但这不符合我的情况。

我一直盯着这一段时间,把它放在一边,再试一次,但继续失败。

有谁知道这个谜题中缺少什么?

现在代码:Presenter

 public class CustomerPresenter
{

   private tbl_customer customer = new tbl_customer();
   private CustomerView customerView = new CustomerView();


   public CustomerPresenter(tbl_customer customer, CustomerView customerView)

   {
       this.customer = customer;
       this.customerView = customerView;
       customerView.customerPresenter = this;
   }
  // Get a list of customers
   public List<tbl_customer> customerList;
   public BindingList<tbl_customer> getCustomers()
   {        
       using (var customers = new DBCrownfishEntities())
       {
           var customer = from c in customers.tbl_customer
                          where c.IsDeleted == false
                          select c;

           this.customerList = customer.ToList();
           var listBinding = new BindingList<tbl_customer>(this.customerList);
           return listBinding;
         }

    }
 public void testAdd() 
   {
       tbl_customer customer = new tbl_customer();
       customer.CustomerPrefix = "Pref";
       customer.CustomerName = "Name";
       customer.CustomerAddress = "Address";
       customer.CustomerPostalCode = "1111";
       customer.CustomerCity = "City";
       customer.CustomerCountry = "Country";
       customer.CustomerCountryCode = "BE";
       customer.CustomerVat = "123456789";
       customer.hasVatNumber = true;


   try
    {
     using (var cust = new DBCrownfishEntities())
                   {
                       cust.tbl_customer.Add(customer);
                       cust.SaveChanges();
                       MessageBox.Show("A new customer is succesfully added!");
                   }
               }
               catch (EntityException exception)
               {
                   MessageBox.Show(exception.InnerException.Message.ToString(), "Error Connecting database");


               } 
               catch (Exception)
               {

                   throw;
               }
   }
}

查看:

BindingSource bsCustomers = new BindingSource();

private void CustomerView_Load(object sender, EventArgs e)
{
    bsCustomers.DataSource = customerPresenter.getCustomers();
    cbCustomers.DataSource = bsCustomers;
    cbCustomers.DisplayMember = "CustomerName";
    cbCustomers.ValueMember = "CustomerId";
    radioButton1_CheckedChanged(null, null);
}


private void button1_Click_1(object sender, EventArgs e)
        {
            customerPresenter.testAdd();
        }

型号:

public partial class tbl_customer
{
    public tbl_customer()
    {
        this.tbl_invoices = new HashSet<tbl_invoices>();
    }

    public int CustomerID { get; set; }
    public string CustomerPrefix { get; set; }
    public string CustomerName { get; set; }
    public string CustomerEmailaddress { get; set; }
    public string CustomerAddress { get; set; }
    public string CustomerPostalCode { get; set; }
    public string CustomerCity { get; set; }
    public string CustomerVat { get; set; }
    public string CustomerCountryCode { get; set; }
    public string CustomerCountry { get; set; }
    public bool IsDeleted { get; set; }
    public bool hasVatNumber { get; set; }

    public virtual ICollection<tbl_invoices> tbl_invoices { get; set; }
}

0 个答案:

没有答案