Как вставить элемент ComboBox в ListBox? [WinForms]

Вопрос:Вопрос очень прост, Как вставить выбранный элемент ComboBox в ListBox с помощью С#? Я пробовал с этим: listbox.Items.Add(combobox.SelectedItem); и некоторые другие перестановки, но он всегда отображает System.Data.DataRowView или что-то в этом роде. РЕДАКТИРОВАТЬ: roblem был увлечен этим 2 lbList.DisplayMember = "hm"; lbList.ValueMember = "ID"; Лучший ответ: Вам нужно определить, что "не работает". Что пошло не

Вопрос:

Вопрос очень прост,
Как вставить выбранный элемент ComboBox в ListBox с помощью С#?

Я пробовал с этим:

listbox.Items.Add(combobox.SelectedItem);

и некоторые другие перестановки, но он всегда отображает System.Data.DataRowView или что-то в этом роде.

РЕДАКТИРОВАТЬ: roblem был увлечен этим 2

lbList.DisplayMember = «hm»; lbList.ValueMember = «ID»; Лучший ответ:

Вам нужно определить, что “не работает”. Что пошло не так?
Этот пример работы отлично работает. Чтобы использовать объект (раскомментируйте строки), убедитесь, что вы установили свойство DisplayMember, обратите внимание, что мне не нужно бросать, потому что я использую это свойство.

public partial class Form1 : Form { private void Form1_Load(object sender, EventArgs e) { List<string> x = new List<string>(); x.Add(«A»); x.Add(«B»); x.Add(«C»); x.Add(«D»); x.Add(«B»); List<Client> z = new List<Client>(); z.Add(new Client() { Name = «A» }); z.Add(new Client() { Name = «B» }); z.Add(new Client() { Name = «C» }); comboBox.Items.AddRange(x.ToArray()); //comboBox.DisplayMember = «Name»; //listBox.DisplayMember = «Name»; //comboBox.Items.AddRange(z.ToArray()); } private void comboBox_SelectedIndexChanged(object sender, EventArgs e) { listBox.Items.Add(comboBox.SelectedItem); } } public class Client { public string Name { get; set; } } Ответ №1

Ante Я думаю, что проблема исходит из comboBox.SelectedItem, это возвращает объект, а в вашем случае Object является System.Data.DataRowView. Я думаю, вам нужно передать значение combobox.selectedItem. Я парень VB, поэтому не уверен в синтаксисе для С#, но в VB мы бы сделали что-то вроде этого:

DirectCast(combobox.SelectedItem, DataRowView).Foo

с foo – это то, что когда-либо значение вы хотите передать в список.

Другой вариант, который может работать, если ваше намерение включить значение поля со списком в списке, заключается в использовании:

combobox.selectedvalue

это возвращает и Object, но на самом деле объект, который отображается в погоде combobox, является строкой, int и т.д. Не уверен, что это помогает, но мне приходилось делать что-то очень похожее на это в прошлом и что решение я придумал.

Ответ №2

Выбранный элемент combobox – это DataRowView, и listbox вызывает DataRowView.ToString(), чтобы определить, что отображать.

Вы можете либо

  • Введите object возвращаемое значение ComboBox.SelectedItem в DataRowView и добавьте значение столбца, который вы хотите отобразить. (т.е. listbox.Items.Add(((DataRowView)combobox.SelectedItem).FieldName);
  • Задайте значения “DisplayMember” и “ValueMember” в списке, поэтому в списке больше не используется ToString(). Вероятно, это уже было сделано для вашего comboxbox, иначе он также будет отображать “System.Data.DataRowView”.

Ответ №3

Вы можете легко получить строку (нетипизированная):

DataRowView drv = (DataRowView) combobox.SelectedItem; DataRow row = drv.Row;

После этого это зависит от того, какой колокол вам нужен, если вы знаете имя столбца:

object value = row[«Column»]; listbox.Items.Add(value);

Оцените статью
Добавить комментарий