2017-08-16 10 views
-1

目前我正在进行一个学校项目,我有这个班级成员。 列表框显示了成员名称中的propeties名称。 我遇到的问题是具有相同名称的成员在输出文本框中显示相同的信息。我需要一个不同的解决方案让我粘贴在我的。通过双击具有相同名称的列表框来显示不同的对象

public void OutputMember() 
    { 
     searchResult = MemberSearch.ByName(Program.memberList, lbmembers.Text); 
     foreach (Members member in searchResult) 
     { 
      tboutput.Text = string.Format("Medlemsnr {0}" + 
      "Namn: {1}\r\n" + 
      "Eftername: {2}\r\n" + 
      "Personnummer: {3}\r\n" + 
      "Adress: {4}\r\n" + 
      "Email: {5}\r\n" + 
      "Tele:{6}\r\n\r\n\r\n",member.MemberNr, member.Name, member.SurName, member.BirthYear.outStringWithId(), 
      member.Adress, member.Email, member.Tele); 

所以我明白这是参数的问题。 我只是发送一个成员名单,只是在文本中的名称。

public static List<Members> ByName(List<Members> memberList, string member) 
{ 

    List<Members> searchList = new List<Members>(); 


    for (int i = 0; i < memberList.Count; i++) 
    { 
     if (memberList[i].Name.Equals(member)) 
     { 
      searchList.Add(memberList[i]); 
     } 
    } 

    return searchList; 

所以问题仍然是如何做我通过双击列表中的三个相等的名字之一查看在输出文本框“正确”的对象。

+0

如果我使用tboutput.Text + =给了我所有具有相同的名称, 成员,但不是寻找什么即时通讯的, – Mrjoes

回答

0

您还没有编写您希望程序执行的操作。

您希望程序根据其在列表中的位置显示相关成员。

但是,您已经编码了一种搜索方法,该方法根据名称匹配返回成员,其中可能有重复。

当您只需要1个时,您也从列表中返回多个项目,并且不必要地遍历所有结果而仅返回最后一个。

你只需要:

public void OutputMember() 
{ 
     member = Program.memberList[lbmembers.SelectedIndex]); 
     tboutput.Text = string.Format("Medlemsnr {0}" + 
     "Namn: {1}\r\n" + 
     "Eftername: {2}\r\n" + 
     "Personnummer: {3}\r\n" + 
     "Adress: {4}\r\n" + 
     "Email: {5}\r\n" + 
     "Tele:{6}\r\n\r\n\r\n",member.MemberNr, member.Name, member.SurName, member.BirthYear.outStringWithId(), 
     member.Adress, member.Email, member.Tele); 
} 
+0

如果你在做这个VS2015 +,你可以用一个插入字符串替换string.Format,比如tboutput.Text = $“Name:{member.Name} ...”; –

+0

谢谢!非常棒! 与我的搜索方法的东西是我有一个搜索文本框以及如果我例如键入“asd”我希望输出显示名为“asd”的所有成员,这就是为什么我有搜索方法添加多个对象。为了减少编码的缘故,我试图为搜索框和列表框添加相同的搜索方法:P但显然我只需要列表框中的索引:) – Mrjoes

+0

如果您想通过文本实现搜索并通过索引通过一个函数进行搜索,您可以通过函数重载来实现这一点。只需将您的ByName方法重命名为Search之类的内容,然后编写另一个将int作为第二个参数的版本。文本版本可以返回一个列表和int版本可以返回一个成员。顺便提一句,你可能想看看你的命名约定,如果该类被命名为Members或Member? –

相关问题