C# Windows窗体数据网格行显示问题
我正在使用windows窗体,当我在做一些事情时,我注意到我的datagridview工作不正常 这是我的密码:C# Windows窗体数据网格行显示问题,c#,winforms,C#,Winforms,我正在使用windows窗体,当我在做一些事情时,我注意到我的datagridview工作不正常 这是我的密码: private void Button1_Click(object sender, EventArgs e) { DataTable table = new DataTable(); table.Columns.Add("aa", typeof(string)); table.Columns.Add("AA",
private void Button1_Click(object sender, EventArgs e)
{
DataTable table = new DataTable();
table.Columns.Add("aa", typeof(string));
table.Columns.Add("AA", typeof(string));
table.Columns.Add("Aa", typeof(string));
table.Columns.Add("aA", typeof(string));
string[] arr = { "BB", "Bb", "bB", "bb"};
table.Rows.Add(arr);
dataGridView1.DataSource = table;
}
我希望看到一个包含以下列的表aa;AA;Aa;aA
和行BB;Bb;bB;bb
列显示正确,但行显示为:
BB ; BB ; BB ; BB
为什么会这样
请帮帮我,谢谢 上面它不起作用的原因是您正在将整行添加到arr[0]。要解决此问题,必须将行中的每个值分配给相应的列。尝试执行以下操作以获得所需的结果:
private void Button1_Click(object sender, EventArgs e)
{
string[] arr = { "BB", "Bb", "bB", "bb" };
int numberOfColumns = 4;
int numberOfRows = 4;
dataGridView1.Columns.Add("aa", "aa");
dataGridView1.Columns.Add("AA", "AA");
dataGridView1.Columns.Add("Aa", "Aa");
dataGridView1.Columns.Add("aA", "aA");
dataGridView1.Rows.Add(numberOfRows);
for (int i = 0; i < numberOfColumns; i++)
{
dataGridView1[i, 0].Value = arr[i];
}
}
private void按钮1\u单击(对象发送者,事件参数e)
{
字符串[]arr={“BB”、“BB”、“BB”、“BB”};
int numberOfColumns=4;
int numberOfRows=4;
dataGridView1.Columns.Add(“aa”、“aa”);
dataGridView1.Columns.Add(“AA”、“AA”);
dataGridView1.Columns.Add(“Aa”、“Aa”);
dataGridView1.Columns.Add(“aA”、“aA”);
dataGridView1.Rows.Add(numberOfRows);
for(int i=0;i
如果要使用数据源,我将首先创建一个类,将我的值添加到该类的每个属性(列),如下所示:
class MyValues
{
public string aa { get; set; }
public string AA { get; set; }
public string Aa { get; set; }
public string aA { get; set; }
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private List<MyValues> list = new List<MyValues>();
private void Button1_Click(object sender, EventArgs e)
{
list.Add(new MyValues { aa = "BB", AA = "Bb", Aa = "bB", aA = "bb" });
dataGridView1.DataSource = list;
}
}
类MyValue
{
公共字符串aa{get;set;}
公共字符串AA{get;set;}
公共字符串Aa{get;set;}
公共字符串aA{get;set;}
}
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
私有列表=新列表();
私有无效按钮1\u单击(对象发送者,事件参数e)
{
添加(新的MyValue{aa=“BB”、aa=“BB”、aa=“BB”、aa=“BB”、aa=“BB”});
dataGridView1.DataSource=列表;
}
}
您的列都有相同的名称
C#区分大小写,但DataTable
无法区分它们
给他们起不同的名字,一切都好:
table.Columns.Add("aa1", typeof(string));
table.Columns.Add("AA2", typeof(string));
table.Columns.Add("Aa3", typeof(string));
table.Columns.Add("aA4", typeof(string));
关于列名:
名称比较不区分大小写
这是一个奇怪的发现,正如人们所期望的:
在DataColumnCollection上添加:
集合已具有具有指定名称的列。(修订)
比较不区分大小写。)
…但它没有被提出。好的,你的答案并不完全正确,但有了它,我可以发现问题:我必须使用dataGridView1.Rows.Add(arr);而不是table.Rows.Add(arr);不管怎样,谢谢你的帮助+rep@LPeSi:不,您不必这样做,这实际上意味着放弃数据绑定。建议的解决方案是使用正确的列名!