Я относительно новичок в C# (WinForms) и задал вопрос о комбинированных ящиках. У меня есть поле со списком объектов Рецензента (это пользовательский класс с переопределенным методом ToString), и в настоящее время я пытаюсь пройти через все отмеченные элементы и использовать их для создания установочного файла.C# пользовательский объект в combobox
Вот как заполняется поле со списком (заполняется при загрузке формы). Параметры - это всего лишь набор связанных списков и кода синтаксического анализа.
for (int i = 0; i < parameters.GetUsers().Count; i++)
{
UserList.Items.Add(parameters.GetUsersArray()[i], parameters.GetUsersArray()[i].isSelected());
}
Вот как я пытаюсь его прочитать. setup - это StringBuilder. Проблема в том, что GetID не определен. Предоставляет ли функция add над объектом Рецензента объект Object? Это выглядит немного забавно, так как он создает файл, загруженный в Perl-скрипт. Образец требуемая выходная линия выглядит следующим образом: inspector0 => "chg0306",
for (int i = 0; i < UserList.CheckedItems.Count; i++)
{
setup.AppendLine("inspector" + i.ToString() + " => \t \"" +
UserList.CheckedItems[i].GetID() + "\",");
}
Вот класс пользователей: (Sample Пользователь ID = имя aaa0000: Боб Джо)
public class Reviewer
{
private string name;
private string id;
private bool selected;
public Reviewer(string newName, string newID, bool newSelected)
{
name = newName;
id = newID;
selected = newSelected;
}
public string GetName()
{
return name;
}
public override string ToString()
{
//string retVal = new string(' ', id.Length + name.Length + 1);
string retVal = id + '\t' + name;
return retVal;
}
public string GetID()
{
return id;
}
public bool isSelected()
{
return selected;
}
}
Для потомков , вот список параметров:
public class ParameterLists
{
public ParameterLists()
{
projects = new LinkedList<string>();
reviewers = new LinkedList<Reviewer>();
}
public enum FileContents {
PROJECT_LIST,
USERS_LIST,
}
public LinkedList<Reviewer> GetUsers()
{
return reviewers;
}
public LinkedList<string> GetProjects()
{
return projects;
}
public Reviewer[] GetUsersArray()
{
Reviewer[] userArray = new Reviewer[reviewers.Count];
reviewers.CopyTo(userArray, 0);
return userArray;
}
public string[] GetProjectsArray()
{
String[] projectArray = new String[projects.Count];
projects.CopyTo(projectArray, 0);
return projectArray;
}
public void LoadParameters(string fileName)
{
//Reads the parameters from the input file.
}
private void CreateDefaultFile(string fileName)
{
// Create the file from the defaultfile , if it exists.
// Otherwise create a blank default file.
}
private LinkedList <string> projects;
private LinkedList <Reviewer> reviewers;
}
У меня, вероятно, отсутствует что-то простое, исходящее из встроенного C++. Любая помощь будет оценена по достоинству.
я чувствую своего рода немой, но это, кажется, работает. Это, похоже, подтвердит мою теорию о том, что она хранит ее как объект, а не рецензент. Благодаря! – user3071872