2016-11-23 112 views
-1

我有一个WCF服务和一个Windows窗体。点击表单上的按钮后,我想要一个列表(包含4个成员)通过服务填充。然后,我希望将列表中显示的4列表中的列表显示为列。C#显示列表中的所有成员

更好的是,我想显示使用每个成员作为文本框的一部分。

现在,我只能在单独的列表框中显示每个成员。

这是代码。 GateInfo.cs:

using System.Runtime.Serialization; 

namespace JimWcfFormTest3 
{ 
    [DataContract] 

    public class GateInfo 
    { 
     [DataMember] 
     public int carid { get; set; } 

     [DataMember] 
     public int paid_at_gate { get; set; } 

     [DataMember] 
     public int wash_pkg_purch { get; set; } 

     [DataMember] 
     public string carte { get; set; } 
    } 
} 

Service1.cs:

using System.Collections.Generic; 
using System.ServiceModel; 

namespace JimWcfFormTest3 
{ 
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)] 
    public class Service1 : IService1 
    { 
     private List<GateInfo> _gate; 

     private Service1() 
     { 
      _gate = new List<GateInfo>(); 
     } 

     public void Gate_to_Server(GateInfo gatein) 
     { 
      if (gatein != null) _gate.Add(gatein); 
     } 

     public List<GateInfo> Server_to_Term() 
     { 
      return _gate; 
     } 
    } 
} 

Form1.cs中:

private void button1_Click(object sender, EventArgs e) 
{ 
    int carnum = 2; 
    int pay = 1; 
    int wash = 5; 
    string txt = "TEST"; 
    var data_out = new GateInfo { carid = carnum, paid_at_gate = pay, wash_pkg_purch = wash, carte = txt }; 

    server.Gate_to_Server(data_out); 

    listBox1.DisplayMember = "carid"; 
    listBox1.DataSource = server.Server_to_Term(); 

    listBox4.DisplayMember = "paid_at_gate"; 
    listBox4.DataSource = server.Server_to_Term(); 

    listBox5.DisplayMember = "wash_pkg_purch"; 
    listBox5.DataSource = server.Server_to_Term(); 

    listBox6.DisplayMember = "carte"; 
    listBox6.DataSource = server.Server_to_Term(); 
} 

理想情况下,我想都在像这样一个文本框中显示此:

“timestamp:Car = carid,Pay = paid_at_gate,Package = wash_pkg_purch,Ala Carte = carte”

+1

下降了'DataGridView'的形式,然后设置列表作为'控制的DataSource',例如'dataGridView1 .DataSource = server.Server_to_Term();' –

+0

此外,如果您想在一列中显示'timestamp:Car = carid,Pay = paid_at_gate,Package = wash_pkg_purch,Ala Carte = carte',只需重写'ToString()' GateInfo类的方法并返回所需的格式。 –

+0

@ RezaAghaei:感谢您的帮助!我快到了。我有一个后续: 当我将覆盖添加到我的GateInfo类,并在我的表单中执行此操作: 'GateInfo data_out = new GateInfo {carid = carnum,paid_at_gate = pay,wash_pkg_purch = wash,carte = txt} ; textBox1.AppendText(Environment.NewLine + data_out.ToString()+ Environment.NewLine);' 它仍然返回: ** ** WindowsFormsApplication1.JimTestServiceRef.GateInfo 我在做什么错? – JEtheDBA

回答

0

@RezaAghaei回答最初的问题:

滴上形成的DataGridView然后设置一个列表作为 控制的数据源,例如dataGridView1.DataSource = server.Server_to_Term()

如何做到把所有这一切在文本框中的问题是在这里找到答案: How to Override ToString and Display in a textBox

相关问题