Хорошо, у меня есть form1 и form2. Form1 имеет выпадающий список, к которому form2 необходим доступ. На form2 я создал новый класс, который наследует form1. Вот так.
public partial class form2 : Form
{
public form2()
{
InitializeComponent();
//from here I create tasks that reference the code in the newClass class
}
}
public class newClass : projectname.form1
{
public newClass()
{
//methods I access from from the above code
}
}
Я не получаю никаких проблем с многопоточностью, но по какой-то причине каждый раз, когда я пытаюсь получить какой-либо тип значения из этого списка, это всегда пустая или пустая строка. Я пробовал:
If (combobox.selecteditem == @"C:\")
{
//do something
}
И
If (combobox.text == @"C:\")
{
//do something
}
И
If (combobox.selectedindex == combobox.items.indexof(@"C:\")
{
//do something
}
И
If (combobox.selecteditem == combobox.findstringexact(@"C:\")
{
//do something
}
Обычно я бы просто использовал: (в моем случае это -1 по какой-то причине)
If (combobox.selectedindex == -1)
{
//do something
}
Это работает просто отлично, однако элементы в выпадающем списке не всегда будут одинаковыми, поэтому вы понимаете, почему это не точный метод. Я читал бесчисленные сообщения, и кажется, что
combobox.selecteditem
- мой лучший выбор, учитывая, что я использую тип выпадающего списка DropDownList. Ничего не происходит, когда я использую это, за исключением того, что он дает мне предупреждение поставить (строку) слева от знака '='. Вот так:
If (combobox.selecteditem == @"C:\")
{
//gives warning that I need (string) on left side of '='
}
Если я это сделаю, предупреждений нет, но все равно ничего.
If ((string)combobox.selecteditem == @"C:\")
{
//do something
}
Поле со списком заполняется в форме form__load:
string[] combobox = Directory.GetLogicalDrives();
foreach (string box5 in combobox)
{
combobox.Items.Add(box5);
}
Я использую C #, приложение Windows Form, .Net Framework 4.0
Если бы кто-нибудь мог пролить свет на это, это было бы очень ценно. Я тяну свои волосы на этом. :)