标签: datagridview

List <T> vs BindingList <T>优点/ DisAdvantages

有人可以描述两者之间的区别对于我的项目.

目前我有一个List<MyClass>并将BindingSource设置为它,并将DataGridView设置为BindingSource.

我已经实现了IEditableObject,当调用CancelEdit时,我将我的对象恢复到它的状态Memberwise.Clone()

将我的List更改为BindingList会解决这个问题,使用BindingList有什么好处?

.net c# data-binding datagridview winforms

85
推荐指数
2
解决办法
7万
查看次数

将List <T>绑定到WinForm中的DataGridView

我上课了

class Person{
      public string Name {get; set;}
      public string Surname {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

List<Person>我添加一些项目.这个清单绑定了我的DataGridView.

List<Person> persons = new List<Person>();
persons.Add(new Person(){Name="Joe", Surname="Black"});
persons.Add(new Person(){Name="Misha", Surname="Kozlov"});
myGrid.DataSource = persons;
Run Code Online (Sandbox Code Playgroud)

没有问题.myGrid显示两行,但是当我向persons列表中添加新项目时,myGrid不会显示新的更新列表.它只显示我之前添加的两行.

那么问题是什么?

每次重新绑定都很有效.但是当我DataTable每次进行一些更改时都绑定到网格时,DataTable没有任何ReBind需要myGrid.

如何在不重新绑定的情况下解决它?

c# grid binding datagridview list

85
推荐指数
2
解决办法
22万
查看次数

在我的两个屏幕之一上可怕的重绘DataGridView性能

我实际上已经解决了这个问题,但我是为后人发布的.

我的双显示器系统上的DataGridView遇到了一个非常奇怪的问题.该问题表现为对控件的极快重复(如完全重绘的30秒),但只有在我的某个屏幕上时才会显示.在另一方面,重绘速度很好.

我有一个Nvidia 8800 GT,带有最新的非beta驱动程序(175件).这是驱动程序错误吗?我会把它留在空中,因为我必须忍受这种特殊的配置.(它不会发生在ATI卡上,但......)

绘画速度与单元格内容无关,自定义绘图根本不会改善性能 - 即使只绘制实心矩形也是如此.

我后来发现在表单上放置一个ElementHost(来自System.Windows.Forms.Integration命名空间)可以解决问题.它不必被搞砸; 它只需要是DataGridView所在的表单的子级.只要Visible属性为true ,就可以将其大小调整为(0,0).

我不想明确地将.NET 3/3.5依赖项添加到我的应用程序中; 我创建了一个方法来在运行时创建此控件(如果可以)使用反射.它工作正常,至少它在没有所需库的机器上优雅地失败 - 它只是变得缓慢.

这个方法还允许我在应用程序运行时应用修复,这样可以更容易地看到WPF库在我的表单上发生了什么变化(使用Spy ++).

经过大量的试验和错误,我注意到在控件本身上启用双缓冲(而不仅仅是表单)可以解决问题!


因此,您只需要根据DataGridView创建一个自定义类,以便启用其DoubleBuffering.而已!

class CustomDataGridView: DataGridView
{
    public CustomDataGridView()
    {
        DoubleBuffered = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

只要我的所有网格实例都使用这个自定义版本,一切都很好.如果我遇到由此引起的情况,我无法使用子类解决方案(如果我没有代码),我想我可以尝试将该控件注入表单:)(虽然我'将更有可能尝试使用反射来强制从外部启用DoubleBuffered属性再次避免依赖).

令人遗憾的是,这么简单的事情花了我很多时间......

.net performance datagridview nvidia winforms

81
推荐指数
5
解决办法
4万
查看次数

如何将List <string>绑定到DataGridView控件?

我有一个简单的List<string>,我希望它显示在一个DataGridView列中.
如果列表包含更复杂的对象,则只需将列表建立为其DataSource属性的值.

但是当这样做时:

myDataGridView.DataSource = myStringList;
Run Code Online (Sandbox Code Playgroud)

我得到一个名为的列,Length并显示字符串的长度.

如何在列中显示列表中的实际字符串值?

c# binding datagridview

78
推荐指数
5
解决办法
14万
查看次数

如何检测DataGridView CheckBox事件的变化?

我有一个winforms应用程序,并希望在DataGridView选中/取消选中控件中嵌入的复选框时触发一些代码.我尝试过的每一件事

  1. CheckBox单击时但在其检查状态发生变化之前触发,或者
  2. 只有在CheckBox失去焦点时触发

我似乎无法找到在检查状态更改后立即触发的事件.


编辑:

我想实现的是,当检查的状态CheckBox的一个DataGridView变化,在其他两个数据DataGridView变迁.然而,我使用的所有事件中,其他网格中的数据仅CheckBox在第一次DataGridView失去焦点后才会发生变化.

c# datagridview winforms

77
推荐指数
7
解决办法
12万
查看次数

DataGridView AutoFit和Fill

我的3列DataGridView.我想要做的是让前2列自动适应内容的宽度,并让第3列填充剩余的空间.

在WinForms中可以做到吗?我正在从EF DataContext加载我的数据,如果它有用的话.我已经包含了目前看起来如何的图像.

在此输入图像描述

c# datagridview winforms

77
推荐指数
4
解决办法
18万
查看次数

如何让DataGridView显示所选行?

我需要强制DataGridView显示所选row.

简而言之,我有一个根据键入的内容textbox更改DGV选择textbox.发生这种情况时,选择会更改为匹配row.

不幸的是,如果所选row内容不在视图中,我必须手动向下滚动才能找到所选内容.有谁知道如何强制DGV显示所选row

谢谢!

c# scroll datagridview selected winforms

67
推荐指数
4
解决办法
9万
查看次数

如何在用户单击列标题时启用DataGridView排序?

我的表单上有一个datagridview,我填充它:

dataGridView1.DataSource = students.Select(s => new { ID = s.StudentId, RUDE = s.RUDE, Nombre = s.Name, Apellidos = s.LastNameFather + " " + s.LastNameMother, Nacido = s.DateOfBirth })
                                   .OrderBy(s => s.Apellidos)
                                   .ToList();
Run Code Online (Sandbox Code Playgroud)

现在,我使用s.Apellidos作为默认排序,但我也想允许用户在单击列标题时进行排序.

这种排序不会以任何方式修改数据,它只是一个客户端奖励,以便在用眼睛扫描屏幕时更容易搜索信息.

谢谢你的建议.

c# sorting datagridview winforms

66
推荐指数
6
解决办法
14万
查看次数

右键单击以选择Datagridview中的行并显示一个菜单以将其删除

我的DataGridView中有几列,并且我的行中有数据.我在这里看到了一些解决方案,但我无法将它们结合起来!

只需右键单击一行,它就会选择整行,并显示一个菜单,其中包含删除行的选项,当选择该选项时,它将删除该行.

我做了一些尝试,但没有一个工作,它看起来很乱.我该怎么办?

c# select datagridview contextmenu right-click

60
推荐指数
3
解决办法
13万
查看次数

如何在DataGridView列中右对齐文本?

如何在DataGridView列中右对齐文本?我正在编写.NET WinForms应用程序.

.net datagridview datagridviewcolumn winforms

60
推荐指数
3
解决办法
12万
查看次数