Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在datagridview c#中显示arraylist内容?_C# - Fatal编程技术网

如何在datagridview c#中显示arraylist内容?

如何在datagridview c#中显示arraylist内容?,c#,C#,这是一个包含受训人员信息的结构 public struct Stagaire { public string nom; public string pre_nom; public string date; public string fillier; public int num; } 这个Arraylist是为每一个新的受训者准备的 ArrayList ar = new ArrayList(); 这是将Stagaire添加到Arraylist的代码 private v

这是一个包含受训人员信息的结构

public struct Stagaire
{
  public string nom;
  public string pre_nom;
  public string date;
  public string fillier;
  public int num;
}
这个Arraylist是为每一个新的受训者准备的

ArrayList ar = new ArrayList(); 
这是将Stagaire添加到Arraylist的代码

private void button1_Click(object sender, EventArgs e)
{
  Stagaire stg = new Stagaire();
  stg.nom = textBox1.Text;
  stg.pre_nom = prenom.Text;
  stg.date = date.Text;
  stg.fillier = fill.Text;
  stg.num = Convert.ToInt32(num.Text);
  ar.Add(stg);
}

如何在datagridview中显示任何Stagaire信息?

对于datagridview,您必须添加一个新Stagaire并将ar[i]影响到nes Stagaire,然后您必须将新Stagaire的平均信息添加到datagridview

Stagaire sgt = new Stagaire();
        for (int i = 0; i < ar.Count; i++)

        {
            sgt = (Stagaire)ar[i];//ar[i] is an Object so you have to convert it (caste) to the Stagaire type 
            dataGridView1.Rows.Add(sgt.nom,sgt.pre_nom,sgt.date,sgt.num,sgt.fillier);

        }
Stagaire sgt=new Stagaire();
对于(int i=0;i
使用
class
而不是
struct

使用
属性
而不是
字段

使用公认的命名约定

public class Stagaire
{
    public string Nom { get; set; }
    public string PreNom { get; set; }
    public string Date { get; set; }
    public string Fillier { get; set; }
    public int Num { get; set; }
}
使用强类型集合而不是
ArrayList

使用
BindingList
自动跟踪集合中的项目。
给它一个合适的名字

BindingList<Stagaire> stagaires = new BindingList<Stagaire>();
由于数据绑定,DataGridView将自动更新

private void AddButton_Click(object sender, EventArgs e)
{
    var stagaire = new Stagaire();
    // Here the code of filling properties

    stagaires.Add(stagaire);
}
此外,我还将
Date
属性类型更改为
DateTime

public DateTime Date { get; set; }
并且将使用
日期时间选择器
进行日期输入

stagaire.Date = dateTimePicker.Value;

使用属性而不是字段。只需将
{get;set;}
添加到所有。然后使用数据绑定:
dataGridView.DataSource=ar使用ArrayList vs List是否有特殊原因?
stagaire.Date = dateTimePicker.Value;