Я попытался передать свой combobox текст, а затем значение. Но я не могу получить значение.
DropDownList1.Items.Add(new ListItem("abc", 23));
DropDownList1.Items.Add(new ListItem("def", 56));
Затем я попытаюсь получить значение, когда я выбрал любой из них в Combobox
string text = DropDownList1.SelectedItem.ToString();
string value = DropDownList1.SelectedValue.ToString();
this.label5.Text = text + " with value: " + value;
Это приводит к сбою со следующим кодом ошибки: "Необработанное исключение типа" System.NullReferenceException "произошло в WindowsFormsApplication1.exe
Дополнительная информация: Ссылка на объект не установлена в экземпляр объекта. "
Если я просто использую переменную "текст", все в порядке.
Что мне не хватает?
EDIT: Я знаю, что я получаю null, и это поможет мне не сбой, но почему значение не передается в/из ComboBox? Заранее спасибо
РЕШЕНИЕ: Так мне удалось это решить.
var source = new Dictionary<string, int>();
source.Add("College", 100);
source.Add("T-shirt", 54);
DropDownList1.DataSource = source.ToList();
DropDownList1.DisplayMember = "Key";
DropDownList1.ValueMember = "Value";
А потом
private void button1_Click_1(object sender, EventArgs e)
{
var selectedItem = DropDownList1.Text;
if (DropDownList1.SelectedValue == null)
{
return;
}
string value = DropDownList1.SelectedValue.ToString();
//[etc…]
this.label5.Text = "Cloth:" + selectedItem + " costs " + value;
}
Надеюсь, это поможет кому угодно.
Спасибо всем за помощь!
Вы должны добавить чек для проверки я = null следующим образом:
label1.text = DropDownList1.selectedItem.Value != null ? DropDownList1.selectedItem.Text + " with value: " + DropDownList1.selectedItem.Value : label1.text;
Это должно сделать трюк, который он проверяет, если i! = Null;
вы получаете ошибку, потому что вы не можете пустую переменную с +
Возможно, вам придется привязать эти данные, прежде чем использовать их, попробуйте:
myDropdown.DataBind()
Как только вы добавите свои предметы, и это может решить проблему, я думаю, вы можете найти тонны и тонны уроков об этом, просто Google
Поскольку вы не указали, на какой строке выбрано исключение, так что это немного выстрел в темноте. Однако:
string value = DropDownList1.SelectedValue.ToString();
DropDownList1.SelectedValue
может быть пустым, и в этом случае попытка вызвать ToString() на нем вызовет исключение NullReferenceException. Пытаться:
if (DropDownList1.SelectedValue == null)
return;
var value = DropDownList1.SelectedValue;
this.label5.Text = String.Format("{0} with value: {1}", text, value);
//[etc…]
Обновление:
Предполагая, что ваш combobox не привязан к базе данных, поскольку вы добавляете элементы в память, вам нужно также установить значение по умолчанию. Вам нужно будет найти индекс объекта в коллекции Items
в вашей форме, а затем установить свойство SelectedIndex
в соответствующий индекс.
DropDownList1.Items.Add(new ListItem("abc", 23));
DropDownList1.Items.Add(new ListItem("def", 56));
DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf("abc");
Имейте в виду, что функция IndexOf
может IndexOf
ArgumentException
если элемент не находится в коллекции.
DropDownStyle
DropDown
и вводите в ComboBox. Я предполагаю, потому что введенное значение больше не является одним из элементов в ComboBox
. В этом случае установите для DropDownStyle
значение DropDownList
, предполагая, что пользователь должен выбрать существующее значение.
Возможно, вам придется привязать эти данные, прежде чем использовать их, попробуйте:
myDropdown.DataBind()
Как только вы добавите свои предметы, и это может решить проблему, я думаю, вы можете найти тонны и тонны уроков об этом, просто Google
Я думаю, что не может быть выбран ни один элемент, и вы вызываете.ToString() в нулевом значении, я не могу определить его без дополнительного контекста, как вы пытаетесь получить выбранное значение?
// Check whether your combobox is selected or not
if (DropDownList1.SelectedIndex != -1)
{
string text = DropDownList1.SelectedItem.ToString();
string value = DropDownList1.SelectedValue.ToString();
this.label5.Text = text + " with value: " + value;
}
else
{
// message to select option
}
Пожалуйста, note- У нас есть ComboBox в Windows Application и Dropdownlist в Asp.net.
Я сделал это довольно давно. Но я думаю, вам нужно использовать его так:
var selectedItem = DropDownList1.SelectedItem;
if (selectedItem != null)
{
string text = selectedItem.Text;
string value = selectedItem.Value;
}