Как получить поле со списком для вывода в текстовые поля после выбора элемента - PullRequest
0 голосов
/ 15 февраля 2012

Что я хотел бы сделать, это как только пользователь выбрал элемент из поля со списком, чтобы он затем заполнил текстовые поля соответствующими данными.

Я получаю сообщение об ошибке:

Наилучшее совпадение перегруженного метода для '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
        {
        }
    }

Пожалуйста, любая помощь будет принята с благодарностью.Спасибо

Ответы [ 5 ]

2 голосов
/ 15 февраля 2012

Если вы используете привязку данных (или даже если вы заполняете комбинированный список вручную), просто используйте привязку данных в любом случае ...

<ComboBox x:Name="cmbBox" ItemsSource="{Binding Path=Ven}" />
<TextBox Text="{Binding Path=SelectedValue, ElementName=cmbBox}" />

Обратите внимание, что вы хотите получить SelectedValue, а не SelectedIndex или SelectedItem. Хотя, в зависимости от того, как вы настраиваете свой комбинированный список, SelectedItem может быть эквивалентен SelectedValue ... все же, используйте SelectedValue.

0 голосов
/ 15 февраля 2012

Попробуйте 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
    {
    }
}
0 голосов
/ 15 февраля 2012

Свойство SelectedItem поля со списком является объектом , а не int .Поэтому, когда вы пытаетесь получить доступ к элементу в вашем списке, вы получаете ошибку.

Если вы привязали данные к комбинированному списку так, что SelectedItem содержит значение индекса списка (но только как объект), все, что вам нужно сделать, это привести его к типу int и , тогда используйте его, чтобы найти значение в вашем списке.

Например,

int index = Convert.ToInt32(cboVenue.SelectedItem)  

Тогда Ven [index] будет содержать то, что вам нужно.

В качестве альтернативы вам может понадобиться просмотреть свойства комбинированного списка SelectedText, SelectedValue или Selectedindex, чтобы вернуться к требуемому значению.

0 голосов
/ 15 февраля 2012

попробуйте заменить:

txtVenue.Text = Ven[cboVenue.SelectedItem].m_VenName;

на:

txtVenue.Text = Ven[cboVenue.SelectedIndex].m_VenName;
0 голосов
/ 15 февраля 2012

Попробуйте:

    txtVenue.Text = Ven[cboVenue.SelectedIndex].m_VenName;

Вы также должны проверить, что индекс>> 0, индекс -1 для «ничего не выбрано»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...