0

動的に作成された30 個のコンボボックスの前景色を変更する必要がありアイテムの値に基づいて前景色を変更する必要があります。私はコンボボックスの動的配列を持っているので、それができません...助けてください。

コードサンプル:

public partial class Form1 : Form
{
ComboBox[] cb = new ComboBox[28];

private void Form1_Load(object sender, EventArgs e)
{        
    for (int ii = 0; ii < 28; ii++)
    {
       cb[ii] = new ComboBox();
       cb[ii].Name = "cb"+ii.ToString();

       cb[ii].Items.Add("OK");
       cb[ii].Items.Add("NOT OK");

       if (cb[ii].Items.ToString().Equals("OK"))
       {
           cb[ii].ForeColor = Color.Black;
       }
       else
       {
           cb[ii].ForeColor = Color.Red;
       } 
   }
}


New code:
    private void ComboBoxSelectedIndexChanged(object sender, EventArgs e)
    {

        MessageBox.Show("Event Raised");

        ComboBox senderComboBox = (ComboBox)sender;

        if (senderComboBox.SelectionLength > 0)
        {

            if (senderComboBox.SelectedItem.ToString() == "OK")
            {
                senderComboBox.Items.Add("");
                senderComboBox.ForeColor = Color.Green;
                senderComboBox.Items.Remove("");
            }
            else
            {
                senderComboBox.Items.Add("");
                senderComboBox.ForeColor = Color.Red;
                senderComboBox.Items.Remove("");
            }
        }
    }

前もって感謝します。

4

3 に答える 3

1

SelectedIndexChanged で色を変更できます。

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
   ComboBox cbx = sender as ComboBox;
   if (cbx.Text == "OK")
   {
      cbx.ForeColor = Color.Black;
   }
   else
   {
      cbx.ForeColor = Color.Red;
   }

}

送信者は、影響を受ける ComboBox への参照です。

于 2013-05-21T11:27:46.370 に答える
1

まず第一にあなたを変更してくださいfor

for (int ii = 0; ii < 28; ii++)
{
   cb[ii] = new ComboBox();
   cb[ii].Name = "cb"+ii.ToString();

   cb[ii].Items.Add("OK");
   cb[ii].Items.Add("NOT OK");

   cb[ii].SelectedIndex = 0;        //"OK" option will be selected
   cb[ii].ForeColor = Color.Black;  //set forecolor to black

   cb[ii].SelectedIndexChanged += ComboBoxSelectedIndexChanged;  
}

次にこのイベントを追加します。

private void ComboBoxSelectedIndexChanged(object sender, EventArgs e)
{
    ComboBox senderComboBox = (ComboBox) sender;

    if (senderComboBox.SelectionLength > 0)
    {
        if (senderComboBox.SelectedItem.ToString() == "OK")
        {
            cb[ii].ForeColor = Color.Black;
        }
        else
        {
            cb[ii].ForeColor = Color.Red;
        }
    }
}

SelectedIndexChangedインデックスがユーザーまたはコードによって変更されたかどうかにかかわらず、常に起動されます。ユーザーが選択を変更したときにのみ前景色を変更したい場合は、SelectionChangeCommitted

于 2013-05-21T11:30:16.087 に答える