我对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 ++。任何帮助将不胜感激。
答案 0 :(得分:1)
你必须施放那个物体:
((Reviewer)UserList.CheckedItems[i]).GetID()