![](/img/trans.png)
[英]How Specify columns at list to show in DataSource GridView? C#
[英]How to add a gridview to a C# winforms project with a list of objects as the datasource
我正在Visual Studio 2015社区中使用C#构建Winforms应用程序。 在这个项目中,我有一个这样构建的类:
public class EDIFile
{
public string fullInFilePath { get; set; }
public string fullOutFilePath { get; set; }
public string InfileName { get; set; }
public string OutfileName { get; set; }
public string UniqueID { get; set; }
public DateTime infileDateTime { get; set; }
public DateTime outfileDateTime { get; set; }
public TimeSpan timeDiff { get; set; }
}
我有一个此类的清单。 加载后,我想要一个包含此列表内容的gridview。 我看了网上,找到了两个解决方案,但没有一个对我有用。 如果可以的话,请通过一些具体说明帮助我。 提前致谢。
我还没有得到它为我工作。 基于这两个答案,这里是我到目前为止的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ProviderPayProject1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_Load_1(object sender, List<EDIFile> EDIFiles)
{
DataGridView dataGridView1 = new DataGridView();
dataGridView1.AutoGenerateColumns = true;
Controls.Add(dataGridView1);
dataGridView1.DataSource = EDIFiles;
}
}
}
这是“ form1”中调用的“ form2”中的代码。 所有“ form2”应该做的就是基于传递到表单的列表加载并填充datagridview。 请帮助我知道我在做什么错。
不能完全确定我理解您的问题,如果您希望通过代码创建DataGridView
,则可以这样做。
List<EDIFile> data; // construct your data.
DataGridView grid = new DataGridView();
grid.AutoGenerateColumns = true;
this.Controls.Add(grid);
grid.DataSource = data;
其他选项,通过设计器添加DataGidView
控件并设置DataSource
。
ex..
List<EDIFile> data; // construct your data.
dataGridView1.DataSource =data;
您可以使用以下代码,它非常简单。 加载表单后,它将设置DataGridViews数据源。
步骤非常简单:
DataGridView
并将其命名。 在此示例中,其简单命名为dataGridView1
。 不过,您需要自己弄清楚这一步 。 DataSource
,在此示例中,是在窗体加载时设置的Form1_Load()
函数。 您可以通过单击按钮来执行此操作。 List<EDIFile>
列表。 在此示例中, GetDataGridViewData()
返回List<EDIFile>
。 它基本上会创建10个虚拟EDIFile
对象 DataGridView
DataSource
假设您具有第一步的winform,则应该能够将名称空间WindowsFormsApplication1
和Form类Form1
更改为所需的名称:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
// the list of EDFiles
public List<EDIFile> EDFiles { get; set; }
public Form1()
{
InitializeComponent();
Load += Form1_Load; // add Form Load eventhandler
}
/// <summary>
/// Called when the form is loaded
/// </summary>
private void Form1_Load(object sender, EventArgs e)
{
// get dummy data
EDFiles = GetDataGridViewData();
// set datasource to the dummy data
dataGridView1.DataSource = EDFiles;
}
/// <summary>
/// Returns dummy data for the datagridview
/// </summary>
/// <returns></returns>
private List<EDIFile> GetDataGridViewData()
{
// bascially just creates dummy data for the example,
// you'll need to implement based on how you need it to be
var newEDFiles = new List<EDIFile>();
Random random = new Random();
for (int i = 1; i <= 10; i++)
{
int randomNumber = random.Next(0, 100);
var infileDateTime = DateTime.Now;
var outfileDateTime = infileDateTime.AddDays(randomNumber);
var edfile = new EDIFile()
{
fullInFilePath = "fullInFilePath" + i,
fullOutFilePath = "fullOutFilePath" + i,
InfileName = "InfileName" + i,
OutfileName = "InfileName" + i,
UniqueID = "UniqueID" + i,
infileDateTime = infileDateTime,
outfileDateTime = outfileDateTime,
timeDiff = outfileDateTime- infileDateTime
};
newEDFiles.Add(edfile);
}
return newEDFiles;
}
}
public class EDIFile
{
public string fullInFilePath { get; set; }
public string fullOutFilePath { get; set; }
public string InfileName { get; set; }
public string OutfileName { get; set; }
public string UniqueID { get; set; }
public DateTime infileDateTime { get; set; }
public DateTime outfileDateTime { get; set; }
public TimeSpan timeDiff { get; set; }
}
}
在按钮单击事件的Form1
类中,您将需要以下内容:
var f2 = new Form2();
f2.ShowForm(GetDataGridViewData());
Form2
类应如下所示:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public void ShowForm(List<EDIFile> EDIFiles)
{
DataGridView dataGridView1 = new DataGridView();
dataGridView1.AutoGenerateColumns = true;
Controls.Add(dataGridView1);
dataGridView1.DataSource = EDIFiles;
this.ShowDialog();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.