0

名前が付けられた 2 つのコンボボックスがcBTeam1あり、cBTeam2(winForm & C#) 両方とも同じデータベース テーブルからバインドされています。

からチームを選択した場合、cBTeam1この選択されたチームが に表示されないようにしたいcBTeam2

     private void bindComboBox()
    {
       if (con.State == ConnectionState.Closed)
            {
                con.Open();
            }

            string queryTeam1 = "SELECT * FROM Teams ORDER BY Team_name";

            SqlCommand cmd = new SqlCommand(queryTeam1, con);
            adapter = new SqlDataAdapter(cmd);
            adapter.Fill(ds, "Teams");

            this.cBoxTeam1.SelectedIndexChanged -= new EventHandler(this.cBoxTeam1_SelectedIndexChanged);
            cBoxTeam1.DataSource = ds.Tables["Teams"];
            //if(cBoxTeam1.SelectedIndex


            cBoxTeam1.DisplayMember = "Team_name";
            cBoxTeam1.SelectedIndex = -1;
            cBoxTeam1.ValueMember = "team_id";
            this.cBoxTeam1.SelectedIndexChanged += new EventHandler(this.cBoxTeam1_SelectedIndexChanged);
   }  

cBoxTeam2ここにイベントハンドラのコードがありますcBoxTeam2_SelectedIndexChanged

    private void cBoxTeam2_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cBoxTeam1.SelectedIndex == cBoxTeam2.SelectedIndex)
        {
            MessageBox.Show("You already selected " + cBoxTeam2.Text);
        }


        team2_id = Int32.Parse(cBoxTeam2.SelectedValue.ToString());
    }

たとえばcBoxTeam1、イングランド、インド、オーストラリアの 3 つの値を表示します。インドを選択した場合、選択後、インドはcBoxTeam2コンボボックスに表示されません

4

2 に答える 2

0

サンプルを作成しました。サンプルには 2 つのコンボ ボックスがあり、同じデータ ソースをバインドします。最初に選択すると、一致するアイテム以外のcombobox1バインドが存在するかどうかをリストで確認します。combobox 2

 protected List<string> lst
    {
        get
        {
            List<string> lst =
                new List<string>();
            lst.Add("1");
            lst.Add("2");
            lst.Add("3");
            return lst;
        }
    }

   private void Form1_Load(object sender, EventArgs e)
    {            
        comboBox1.DataSource = lst;
        comboBox2.DataSource = lst;
    }

   private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (lst.Contains(comboBox1.SelectedItem.ToString()))
        {
            comboBox2.DataSource = lst.Select(q => q.ToString(CultureInfo.InvariantCulture)).Where(q => q.ToString() != comboBox1.SelectedItem).ToList();
        }
    }
于 2013-07-25T08:09:49.040 に答える
0

これを試して

    public void loadcBTeam1()
    {
       ....
       string queryTeam1 = "SELECT Team_name FROM Teams  where Team_name <> '" + yourComboBox2.text + "' ORDER BY Team_name";
     ......
    }

そしてあなたの ComboBox2 TextChanged で

   private void comboBox2_TextChanged(object sender, EventArgs e)
    {
        loadcBTeam1();
    }
于 2013-07-25T08:16:35.780 に答える