1

コンボボックスで選択したアイテムが変更されるたびに、2 つの異なるテキスト ボックスにオブジェクト プロパティを入力しようとしています。次のコードがあります。

namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {            
        Domicilio[] domicilios = new Domicilio[]{
            new Domicilio{Calle="balbin",Numero=469},
            new Domicilio{Calle="palacios",Numero=589},
            new Domicilio{Calle="rep arg",Numero=748},
            new Domicilio{Calle="escalada",Numero=562}
        };

        public Form1()
        {
            InitializeComponent();
            foreach (var d in domicilios)
            {
                cbbDatoDomicilio.Items.Add(d);
                cbbDatoDomicilio.DisplayMember = "Calle";   
            }    
        }    
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);                        
        }    
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            // missing code here!
            txtCalle.Text = d.Calle;
            txtNumero.Text = d.Numero.ToString();                
        }
    }
}

問題は、それらを設定する方法が見つからないことです。コードの問題は、変数dがスコープ外にあり、それが機能しないことです。

4

1 に答える 1

0

メソッド内で変数dを定義し、 comboBox1のselectedItemを割り当てる必要があります

 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
 {
      Domicilio d = comboBox1.SelectedItem as Domicilio;
      if (d!=null)
      {
        txtCalle.Text = d.Calle;
        txtNumero.Text = d.Numero.ToString();
      }
 }

一方、bindingSourceを使用して、そのBindingSource.Currentメンバーにアクセスすることを検討してください。(方法:リストまたはDataBindingの例をバインドする方法またはMSDNを参照してください。方法:WindowsフォームComboBoxをバインドする

于 2012-09-17T12:49:28.130 に答える