使用组合框信息填充文本框

时间:2012-09-16 01:56:52

标签: c# winforms

每次组合框选定的项目发生变化时,我都会尝试使用对象属性填充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超出范围,这就是它无法工作的原因。

1 个答案:

答案 0 :(得分: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成员!! (查看How to: Bind a ListDataBinding example或MSDN How to: Bind a Windows Forms ComboBox