组合框中的C#自定义对象

时间:2013-12-05 20:29:44

标签: c# winforms combobox

我对C#(WinForms)比较陌生,对组合框有疑问。我有一个Reviewer对象的组合框(它是一个带有重写的ToString方法的自定义类),我目前正在尝试浏览所有已检查的项目并使用它们来生成安装文件。

以下是填充组合框的方式(在表单加载时填充)。参数只是链表和解析代码的集合。

        for (int i = 0; i < parameters.GetUsers().Count; i++)
        {
            UserList.Items.Add(parameters.GetUsersArray()[i], parameters.GetUsersArray()[i].isSelected());
        }

以下是我试图阅读它的方法。 setup是一个StringBuilder。问题是没有定义GetID。上面的add函数是否将Reviewer对象强制转换为Object对象?它看起来有点滑稽,因为它创建了一个送入Perl脚本的文件。所需的输出样本行如下所示:inspector0 =&gt; “chg0306”,

       for (int i = 0; i < UserList.CheckedItems.Count; i++)
       {
            setup.AppendLine("inspector" + i.ToString() + " => \t \"" +
                UserList.CheckedItems[i].GetID() + "\",");
       }

以下是用户类:(示例用户为ID = aaa0000名称:Bob Joe)

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;
    }
}

对于后代,这里是Parameters类:

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 ++。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

你必须施放那个物体:

((Reviewer)UserList.CheckedItems[i]).GetID()