我正在使用winforms应用程序。在我的表单上,我只是简单地拖放一个DataGridView控件,然后使用属性窗口设置它的一些属性。下面是我用来填充DataGridView的代码。我在构造函数中编写了这段代码。
List<MyCustomClass> lst = new List<MyCustomClass>();
lst = LoadList(/*some params here*/);//now uptil this point everything works i.e the list contains values as desribed.
dataGridView1.DataSource = lst;
问题是,当我运行程序时,我的DataGridView中没有显示任何内容。
有关更多细节,下面的代码表示我使用属性窗口设置的属性
this.dataGridView1.AllowUserToAddRows = false;
this.dataGridView1.AllowUserToDeleteRows = false;
this.dataGridView1.AllowUserToResizeRows = false;
this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dataGridView1.BackgroundColor = System.Drawing.Color.White;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.GridColor = System.Drawing.Color.White;
this.dataGridView1.Location = new System.Drawing.Point(2, 329);
this.dataGridView1.Margin = new System.Windows.Forms.Padding(2);
this.dataGridView1.MultiSelect = false;
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.RowHeadersVisible = false;
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
this.dataGridView1.Size = new System.Drawing.Size(334, 106);
this.dataGridView1.TabIndex = 0;
8条答案
按热度按时间a6b3iqyw1#
我今天得到了几乎相同的东西,问题是我的类有公共字段,而不是属性,因为我已经把它们改为公共自动属性-对我来说工作得很好。
js81xvg62#
在分配DataSource之前添加这段代码,应该就可以了
编辑
还要检查是否有公共属性可用于将类的内容显示为DataGridView中的列
1zmg4dgp3#
必须为数据网格创建数据列。请确保还使用相应DataSource项的属性(即“MyCustomClass”类的属性)设置了每列的“DataPropertyName”属性。
nafvub8i4#
在我的例子中,我没有属性的getter!
x8diyxa75#
当我在设计器中绑定时也有同样的问题。但是如果我在构造器中绑定,它就工作得很好
voj3qocg6#
我也遇到过类似的问题。当您的自定义类具有私有属性,而数据网格视图无法查看这些属性时,通常会发生这种情况。您需要在自定义类字段上创建属性并将其设置为公共属性,以便在从自定义类列表设置数据源时,数据对数据网格视图可见,并且数据可以流过。
crcmnpdw7#
我使用的是VS 2022 w/ VB .NET 7。我的情况是行数与数据源匹配,但没有显示任何内容:我的解决方案是:
1.转到设计器模式
1.单击编辑列(在属性面板中)
1.对于每一列,在DataPropertyName中键入数据源中的列名
现在,如果您像我一样,有一个ComboList是在程序运行时生成的,那么您需要这样做来为组合分配DataSource
祝你好运!
0md85ypi8#
把这个放在最后:
这个应该够了。