1

私は次のコードを持っています:

public partial class ModificarAlimento : Form
{
    private Alimento alim;
    private Dictionary<string, Nutriente> nutrientes;

    public ModificarAlimento(Alimento a, Dictionary<string, Nutriente> nut)
    {
        InitializeComponent();
        this.nutrientes = nut;
        alim = a;

        int i = 0;
        foreach (KeyValuePair<string, CantidadNutrientes> x in alim.Nutrientes) 
        {
            ComboBox n = new ComboBox();
            n.DropDownStyle = ComboBoxStyle.DropDownList;
            n.Location = new Point(12, 25 * (i + 1) + 80);
            n.DataSource = new BindingSource(nutrientes, null);
            n.DisplayMember = "Key";
            n.ValueMember = "Value";
            TextBox cNuts = new TextBox();
            cNuts.Location = new Point(150, 25 * (i + 1) + 80);
            cNuts.Size = new Size(50, cNuts.Size.Height);
            cNuts.Text = x.Value.Cantidad.ToString();
            this.Controls.Add(n);
            this.Controls.Add(cNuts);
            i++;
            n.SelectedValue = x.Value.Nutriente;
        }
    }

    private void ModificarAlimento_Load(object sender, EventArgs e)
    {

    }
}

今。問題はここにあります:

n.SelectedValue = x.Value.Nutriente;

Alimento(Food)にはCantidadNutrientes、double値を格納する辞書セットとNutriente(Nutrient)があり、名前が格納されます。だから、

x.Value.Nutriente

xに保存されているCantidadNutrientesの栄養素を取得します。

なぜこれが機能しないのですか?どんな助けでも大歓迎です。

編集:私もこれを試しています

n.SelectedIndex = n.FindStringExact(x.Key);
//and
n.SelectedValue = n.FindStringExact(x.Value.Nutriente.Nombre);

ただし、いくつかの奇妙な理由で、デバッグ中には機能しますが、行ごとに調べないと、まったく機能しません。

4

3 に答える 3

2

ComboBox.Textまたはを使用する必要がありますComboBox.SelectedIndex

combox.SelectedIndex = combox.FindStringExact("yourItem");

また

combox.Text = "yourIetmText";

ご了承ください:

ComboBox.FindStringExact Method指定された文字列と正確に一致するアイテム インデックスを見つけるのに役立ちます。

于 2012-07-15T06:23:03.003 に答える
1

入れてみて

n.CreateControl();

this.Controls.Add() の前に置き、

n.SelectedItem = 
  n.Items
   .Cast<KeyValuePair<string, Nutriente>>()
   .SingleOrDefault(o => o.Key == x.Key);

this.Controls.Add() の呼び出し後

于 2012-07-15T07:13:44.317 に答える
0

代わりに、comboBox1.SelectedText を使用して、アイテムを設定し、コンボ内の編集済みテキストとして表示してください

于 2012-07-15T06:30:21.910 に答える