C# 使用<;结构>;作为listview的数据源,将显示object.tostring()而不是DisplayMember

C# 使用<;结构>;作为listview的数据源,将显示object.tostring()而不是DisplayMember,c#,C#,使用struct列表作为Listbox的数据源,我将从struct获取Object.ToString()而不是预期的字段值 在设置DisplayMember之后,当我将DataTable指定为数据源时,这工作正常 然而,我想尝试使用一个struct列表(int ID,String Name),尽管在将数据源分配给列表之前已将DisplayMember设置为“Name”,我还是得到了row对象.toString() 任何帮助都会很棒 在表单加载时: private void frmTest

使用struct列表作为Listbox的数据源,我将从struct获取Object.ToString()而不是预期的字段值

在设置DisplayMember之后,当我将DataTable指定为数据源时,这工作正常

然而,我想尝试使用一个struct列表(int ID,String Name),尽管在将数据源分配给列表之前已将DisplayMember设置为“Name”,我还是得到了row对象.toString()

任何帮助都会很棒

在表单加载时:

    private void frmTestProof_Load(object sender, EventArgs e)
    {
      TestMaker tm = new TestMaker();

      tm.LoadMakersToListbox(ref lstboxMaker);

    }
类TestMaker { 公共结构生成记录 { 公共设施; 公共字符串MakerName; 公共MakerRecord(整数ID,字符串名称) { MakerID=ID; MakerName=名称; } } 公共SQLiteConnection-DBconn; 公共字符串thisPath=“”; public SQLiteCommand sqlCommand=new SQLiteCommand(); 公共数据集dsMaker=新数据集(); public SQLiteDataAdapter daMaker=new SQLiteDataAdapter(); 公共TestMaker() { thisPath=“c:\\sqlite\\abc.db”; DBconn=newsqliteconnection(String.Format(“数据源={0};版本=3;”,thisPath)); DBconn.Open(); sqlCommand.Connection=DBconn; sqlCommand.CommandType=CommandType.Text; } 公共列表GetListOfMakers() { List makerList=新列表(); String sqlMaker=“从VehicleMakerName不为NULL的VehicleMakerName中选择ID,VehicleMakerName” ; sqlCommand.CommandText=sqlMaker; daMaker.SelectCommand=sqlCommand; 尝试 { daMaker.Fill(dsMaker,“制造商”); makerList=(来自dsMaker.Tables[“Makers”].AsEnumerable()中的项) 选择新建MakerRecord() { MakerID=Convert.ToInt32(项[“ID”]), MakerName=item[“VehicleMakerName”]。ToString() }).ToList(); } 捕获(例外情况除外) { Show(String.Format(“制造者列表-错误({0})”,例如Message)); } 返回makerList; } 公共无效LoadMakersToListbox(参考列表框lb) { lb.Items.Clear(); lb.ValueMember=“MakerID”; lb.DisplayMember=“MakerName”; lb.DataSource=GetListOfMakers(); } }


更改
公共字符串MakerName
to
public string MakerName{get;set;}
public int MakerName
public int MakerID{get;set;}
更改
公共字符串MakerName
to
public string MakerName{get;set;}
public int MakerName
公共intmakerid{get;set;}

当然。谢谢你@Tyres。。我真的不应该尝试在凌晨3点编写代码……:)再次谢谢你。@James别想了,我们中最好的人都会这样:)谢谢如果你有时间,也许你可以帮我结账。当然可以。谢谢你@Tyres。。我真的不应该尝试在凌晨3点编写代码……:)再次谢谢你。@James别想了,我们中最好的人都会这样:)谢谢如果你有时间,也许你可以帮我结账。
class TestMaker
  {
    public struct MakerRecord
    {
      public int MakerID;
      public String MakerName;

      public MakerRecord(int ID, String Name)
      {
        MakerID = ID;
        MakerName = Name;
      }
    }

    public SQLiteConnection DBconn;
    public String thisPath = "";
    public SQLiteCommand sqlCommand = new SQLiteCommand();

    public DataSet dsMaker = new DataSet();
    public SQLiteDataAdapter daMaker = new SQLiteDataAdapter();

    public TestMaker()
    {
      thisPath = "c:\\sqlite\\abc.db";

      DBconn = new SQLiteConnection(String.Format("Data Source={0};Version=3;", thisPath));
      DBconn.Open();

      sqlCommand.Connection = DBconn;
      sqlCommand.CommandType = CommandType.Text;
    }

    public List<MakerRecord> GetListOfMakers()
    {
      List<MakerRecord> makerList = new List<MakerRecord>();

      String sqlMaker = "SELECT ID, VehicleMakerName FROM VehicleMakers WHERE VehicleMakerName IS NOT NULL"
                          ;
      sqlCommand.CommandText = sqlMaker;
      daMaker.SelectCommand = sqlCommand;
      try
      {
        daMaker.Fill(dsMaker, "Makers");

        makerList = (from item in dsMaker.Tables["Makers"].AsEnumerable()
                     select new MakerRecord()
                     {
                       MakerID = Convert.ToInt32(item["ID"]),
                       MakerName = item["VehicleMakerName"].ToString()
                     }).ToList();
      }
      catch (Exception ex)
      {
        MessageBox.Show(String.Format("List of Makers - Error ({0})", ex.Message));
      }
      return makerList;
    }

    public void LoadMakersToListbox(ref ListBox lb)
    {
      lb.Items.Clear();
      lb.ValueMember = "MakerID";
      lb.DisplayMember = "MakerName";
      lb.DataSource = GetListOfMakers();
    }
  }