每次组合框选定的项目发生变化时,我都会尝试使用对象属性填充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
超出范围,这就是它无法工作的原因。
答案 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 List或DataBinding example或MSDN How to: Bind a Windows Forms ComboBox