如何在项目选择后将组合框输出到文本框中
本文关键字:输出 文本 组合 项目 选择 | 更新日期: 2023-09-27 18:24:54
我想做的是,一旦用户从组合框中选择了一个项目,就用相应的数据填充文本框。
我得到的错误是:
最佳重载方法匹配"System.Collections.Generic.List.this[int]"具有一些无效的参数
和
参数"1":无法从"object"转换为"int"
这是我代码的一部分:
List<Venue> Ven = new List<Venue>();
private void cboVenue_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
txtVenue.Text = Ven[cboVenue.SelectedItem].m_VenName;
}
catch
{
}
}
请帮忙,我们将不胜感激。感谢
如果您正在使用数据绑定(或者即使您正在手动填充组合框),那么无论如何都只使用数据绑定。。。
<ComboBox x:Name="cmbBox" ItemsSource="{Binding Path=Ven}" />
<TextBox Text="{Binding Path=SelectedValue, ElementName=cmbBox}" />
请注意,您要获取SelectedValue,而不是SelectedIndex或SelectedItem。不过,根据您如何设置组合框,SelectedItem可能相当于SelectedValue。。。不过,请使用SelectedValue。
尝试SelectedIndex而不是SelectedItem。它是整数。
List<Venue> Ven = new List<Venue>();
private void cboVenue_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
txtVenue.Text = Ven[cboVenue.SelectedIndex].m_VenName;
}
catch
{
}
}
尝试替换:
txtVenue.Text = Ven[cboVenue.SelectedItem].m_VenName;
带有:
txtVenue.Text = Ven[cboVenue.SelectedIndex].m_VenName;
试试这个:
txtVenue.Text = Ven[cboVenue.SelectedIndex].m_VenName;
您还必须检查索引是否>=0,索引-1表示"未选择任何内容"
组合框的SelectedItem属性是对象,而不是int。因此,当你试图访问列表中的某个项目时,你会收到错误。
如果您已将数据绑定到组合框,使得SelectedItem确实包含列表索引值(但仅作为对象),那么您所需要做的就是将其强制转换为int并,然后使用它在列表中查找值。
例如
int index = Convert.ToInt32(cboVenue.SelectedItem)
然后Ven[索引]将包含您需要的内容。
或者,您可能需要查看组合框的SelectedText、SelectedValue或Selectedindex属性,以返回所需的值。