datagridview中的数据不显示为C#?

datagridview中的数据不显示为C#?,c#,datagridview,C#,Datagridview,我有一个字符串列表,如下所示: firstname midname lastname aa bbb ccc bb lijb hjhk 我想在datagridview中显示。下面是我的代码: internal void add_names() { userInterface ui = new userInterface(); List_namez names = n

我有一个字符串列表,如下所示:

firstname midname lastname
aa        bbb     ccc
bb        lijb    hjhk
我想在datagridview中显示。下面是我的代码:

 internal void add_names()
        {
             userInterface ui      = new userInterface();
             List_namez names      = new List_namez();  
             ui.lname.DataSource   = names.getnames().ToList();
             ui.ShowDialog();

        }
我不知道为什么在执行上述代码时我的列表没有显示。然而,当我试图调试代码时,我发现ui.lname.DataSource中有数据。但它在datagridview中显示空行。有什么建议可以解决这个问题吗


谢谢。

取决于你对名字的定义。让我举个例子:

class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public override string ToString( )
    {
        return "Person, name=" + FirstName + " Surname=" + LastName;
    }
}

...

public Form1( )
{
  InitializeComponent( );
  dataGridView1.RowsAdded += new DataGridViewRowsAddedEventHandler( dataGridView1_RowsAdded );
  dataGridView1.DataSource = new Person[]{ new Person{ FirstName= "Jarek", LastName= "Mitek"},
                                           new Person{ FirstName= "Tony", LastName= "Montana"}};
}

void dataGridView1_RowsAdded( object sender, DataGridViewRowsAddedEventArgs e )
{
  Console.WriteLine( "Rows added count: " + e.RowCount + " row index: " +e.RowIndex );
  Console.WriteLine( dataGridView1.Rows[ e.RowIndex ].DataBoundItem.ToString( ) );
}
这将生成两个columsn,每个列的名称都是Person类中的属性名称。这是最简单的方法。 当数据被添加到集合中时,您将得到显示您的调试行。
这有帮助吗?

在设置数据源后,似乎缺少了一个
DataBind()
调用。如果列不是自动生成的,则必须针对相应的列指定DataProperty名称