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 成员!(查看如何:绑定列表数据绑定示例或 MSDN如何:绑定 Windows 窗体组合框

于 2012-09-17T12:49:28.130 回答