У меня есть структура, которая выглядит следующим образом:C# ComboBox из массива структур
public struct Server
{
public String ServerName, ServerUrl, ServerEnvironment;
};
Затем создать список структур:
List<Server> MyServers = new List<Server>();
... и читать о восьми записях в ней из небольшого XML-файла. Это работает хорошо, и если я наведите курсор мыши на «MyServers» в отладчике, это выглядит примерно так:
MyServers Count=8
[0] {MyApp.Server}
ServerEnvironment "DEV"
ServerName "My Dev Server #1"
ServerUrl "https://mydev1.mycompany.com/"
[1] {MyApp.Server}
etc...
Тогда, если я что-то вроде MessageBox.Show(MyServers[0].ServerName);
, он отображает ожидаемое значение.
Теперь то, что я хотел бы сделать, это создать ComboBox из полей ServerName. Когда пользователь выбирает один, я думаю, что тогда я использовал свойство SelectedIndex для ComboBox для доступа к другой информации (ServerUrl и ServerEnvironment) для выбранного ServerName.
Я думал, что я мог бы сделать что-то вроде этого:
comboBoxServers.DataSource = MyServers ... something ... ServerName;
Но я не могу найти ничего, что работает. Возможно ли это, или мне нужно создать отдельный простой список с только строками ServerName и использовать его для ComboBox DataSource?
Это звучит неплохо, но когда я попытался добавить {get; задавать; } в объявлении ServerName (public String ServerName {get; set;}), я получил ошибку компилятора, где я попытался присвоить ему значение: Server TempServer; TempServer.ServerName = (значение); TempServer.ServerUrl = (значение); TempServer.ServerEnvironment = (значение); MyServers.Add (TempServer) ;. Ошибка: использование неназначенной локальной переменной TempServer. Это работало до того, как я добавил {get; задавать; }. Нужно ли мне изменить способ присвоения значения? –
Для использования свойств вам нужно использовать 'Server TempServer = new Server();', но вы можете просто переопределить 'ToString()' как еще один aproach. – Fabio
Ура! '{get; задавать; } 'с' Server TempServer = new Server(); 'работал. Спасибо, что помогли мне разобраться со всеми сложными деталями. Существуют ли преимущества использования ToString() или какие-либо обстоятельства, когда это было бы предпочтительнее? Или оба метода одинаково хороши? –