Как сделать привязку DataGridView к ComboBox?

359
28 сентября 2017, 11:51

Есть datagridview и combobox их источники List-ы, мне нужно чтобы когда выбирали один элемент из combobox, то datagridview показывал элементы связанные с элементом из combobox. Чтобы вы понимали, есть два класса один хранит данные другого. И еще мне нужна возможность выбирать элемент из combobox и добавлять туда новые элементы. Очень нужна ваша помощь.

Program.cs

  {  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Threading.Tasks;
  using System.Windows.Forms;
namespace Ex1
{
    public class Client
    {
    public string Name { get { return name; } set { name = value; } }
    public string Birth { get { return birth; } set { birth = value; } }
    public string Country { get { return country; } set { country = value; } 
   }
        public string NOP { get { return nop; } set { nop = value; } }
    public string PID { get { return pid; } set { pid = value; } }
    public string Date { get { return date; } set { date = value; } }
    //public int NoR { get { return nor; } set { nor = value; } }
    public Rooms Room { get { return room; } set { room = value; } }
    private string name;
    private string birth;
    private string country;
    private string nop;
    private string pid;
    private string date;
    private Rooms room;
  //  private int nor;
   }
    public class Hotel
    {
        public string CName { get { return cname; } set { cname = value; } }
    public string CompanyOwner { get { return cowner; } set { cowner = 
value; } }
        public string NumStars { get { return numstar; } set { numstar= 
value; } }
    public string NumRooms { get { return numrooms; } set { numrooms = value; } }
    public List<Client> Clients { get { return clients; } set { clients = 
value; } }
        public string LRooms { get { return lrooms; } set { lrooms = value; 
} }
        private string cname;
       private string cowner;
         private string numstar;
         private string lrooms;
         private string numrooms;
         private List<Client> clients;
         public Hotel()
         {
             clients = new List<Client>();
         }
     }
     public class Rooms
     {
         public int NumberORoom { get { return nor; } set { nor = value; } }
         private int nor;
     }
     static class Program
     {
         /// <summary>
         /// The main entry point for the application.
         /// </summary>
         [STAThread]
         static void Main()
              {
             Application.EnableVisualStyles();
             Application.SetCompatibleTextRenderingDefault(false);
             Application.Run(new Form1());
              }
          }
      }
 }

Form1.cs

 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;
 using System.IO;
 namespace Ex1
 {
     public partial class Form1 : Form
     {
         public BindingList<Hotel> hotels = new BindingList<Hotel>();
         // public System.Windows.Forms.ComboBox HotelsComboBox;
         private BindingList<Client> clients = new BindingList<Client>();

         private Client Klient { get; set; }
         public Form1()
         {
             InitializeComponent();
             Klient = null;
         }
         private Hotel NHotel { get; set; }
         private void backgroundWorker1_DoWork(object sender,                     
    DoWorkEventArgs e)
        {
        }
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs         
e)    
        {
        }
        private void domainUpDown1_SelectedItemChanged(object sender,         
EventArgs e)
        {
        }
        private void CNameBox_TextChanged(object sender, EventArgs e)
        {
            //string CNB = CNameBox.Text;
        }
        private void CBirthBox_TextChanged(object sender, EventArgs e)
        {
            //string CBB = CBirthBox.Text;
        }
        private void CCountryBox_TextChanged(object sender, EventArgs e)
        {
           //string CCB = CCountryBox.Text;
        }
        private void CRentersBox_TextChanged(object sender, EventArgs e)
        {
        //string CRB = CRentersBox.Text;
        }
        private void CPassIdBox_TextChanged(object sender, EventArgs e)
        {
       // string CPIDB = CPassIdBox.Text;
        }
        private void label6_Click(object sender, EventArgs e)
        {
        }
        private void CDateBox_TextChanged(object sender, EventArgs e)
        {
        //string CDB = CDateBox.Text;
        }
        private void ClientAddBtn_Click(object sender, EventArgs e)
        {
             if (CNameBox.Text == String.Empty || CBirthBox.Text ==     
 String.Empty || CCountryBox.Text == String.Empty || CRentersBox.Text ==              
String.Empty || CPassIdBox.Text == String.Empty || CDateBox.Text ==                
String.Empty)
        {
            MessageBox.Show("Please fill all information about client");
        }
         else
        {
            string CNB = CNameBox.Text;
            string CBB = CBirthBox.Text;
            string CCB = CCountryBox.Text;
            string CRB = CRentersBox.Text;
            string CPIDB = CPassIdBox.Text;
            string CDB = CDateBox.Text;
            string CRNB = RoomNumberBox.Text;

            Klient = new Client() { Name = CNB, Birth = CBB, Country = CCB, 
Date = CDB, PID = CPIDB, NOP = CRB };
                MessageBox.Show("Adding Client was succsessfull!");
                clients.Add(Klient);

            dataGridView1.DataSource = clients;
            // dataGridView1.Rows.Add(CNameBox.Text, CBirthBox.Text, 
      CCountryBox.Text, CRentersBox.Text, CPassIdBox.Text, 
      RoomNumberBox.Text);
            dataGridView1.Refresh();
        }
    }
    private void Form1_Load(object sender, EventArgs e)
    {
    }

    private void RoomNumberBox_TextChanged(object sender, EventArgs e)
    {
       //string CRNB = RoomNumberBox.Text;
    }
    private void dataGridView1_CellContentClick(object sender, 
    DataGridViewCellEventArgs e)
    {
    }
    private void HotelsComboBox_SelectedIndexChanged(object sender, 
    EventArgs e)
    {
        HotelsComboBox.DataSource = hotels;
    }
    private void dataGridView1_CellContentClick_1(object sender, 
    DataGridViewCellEventArgs e)
    {
    }
    private void LivingRoomBox_TextChanged(object sender, EventArgs e)
    {
    }
    private void HNameBox_TextChanged(object sender, EventArgs e)
    {
    }
    private void button1_Click(object sender, EventArgs e)
    {
        if (HNameBox.Text == String.Empty || COwnerBox.Text == String.Empty 
    || NumberStars.Text == String.Empty || NumRoomsBox.Text == String.Empty 
    || LivingRoomBox.Text == String.Empty)
        {
            MessageBox.Show("Заполните пожалуйста все поля");
        }
        else
        {
            NHotel = new Hotel() { CName = HNameBox.Text, CompanyOwner = 
   COwnerBox.Text, NumStars = NumberStars.Text, NumRooms = NumRoomsBox.Text 
   , LRooms= LivingRoomBox.Text };
            hotels.Add(NHotel);
            MessageBox.Show("Adding was successfull!");
            HotelsComboBox.DataSource = hotels;
        }
       }
    private void NumStars_TextChanged(object sender, EventArgs e)
    {
    }
    private void NumberStars_TextChanged(object sender, EventArgs e)
    {
    }
   }
  }
введите сюда код
READ ALSO
Аномальный VS и оповещения windows 10

Аномальный VS и оповещения windows 10

Пытаюсь сделать всплывающие оповещения на windows 10Сперва VS просто отказался компилировать код, при этом никаких ошибок он графически не выделил

232
Unity 2D простое AI врага

Unity 2D простое AI врага

Нужно сделать, чтобы если координата x врага не равнялась координате x игрока, то враг передвигался в его сторонуВ начале кажется что работает,...

1027
Модальное окно не блокирует доступ к родительскому

Модальное окно не блокирует доступ к родительскому

Есть два окна, родительское и модальное с авторизацией (допустим)В родительском код:

339
Scroll в Angular2

Scroll в Angular2

Всем приветНужно организовать скроллинг на сайте, в основе которого лежит Angular2

429