如何在项目选择后将组合框输出到文本框中

本文关键字:输出 文本 组合 项目 选择 | 更新日期: 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属性,以返回所需的值。