Tag: datagridview

以编程方式在DataGridView中select一行

如何在运行时以编程方式在DataGridViewselect特定范围的行?

DataGridView中当前选定行的索引

就这么简单。 如何获得DataGridView的当前选定Row的索引? 我不想Row对象,我想索引(0 .. n)。

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

我已经解决了这个问题,但是我把它贴出来留给后人。 我遇到了双监视器系统上DataGridView的一个非常奇怪的问题。 这个问题performance为一个极其缓慢的控制重绘( 像完整重绘30秒 ),但只有当它在我的屏幕之一。 另一方面,重绘速度很好。 我有一个nVidia 8800 GT与最新的非testing版驱动程序(175.东西)。 这是一个驱动程序错误? 我会把它留在空中,因为我必须忍受这个特殊的configuration。 (尽pipe…不会发生在ATI卡上) 油漆速度与单元格内容无关,而且自定义绘图根本无法改善性能 – 即使只是绘制一个坚实的矩形。 后来我发现在表单上放置一个ElementHost(来自System.Windows.Forms.Integration命名空间)可以解决问题。 它不必被搞砸,它只需要是DataGridView所在窗体的子项。 只要Visible属性为true,就可以将其调整为(0,0)。 不想明确地将.Net 3 / 3.5依赖项添加到我的应用程序中,我创build了一个方法来在运行时(如果可以的话)使用reflection来创build此控件。 它起作用了,至less它在没有所需库的机器上优雅地失败 – 它只是变得很慢。 这个方法也可以让我在应用程序运行的时候进行修复,使得更容易看到WPF库在我的表单上改变了什么(使用Spy ++)。 经过大量的反复试验之后,我注意到在控件本身(而不是表单)上启用双缓冲可以纠正问题! 所以,您只需要基于DataGridView创build一个自定义类,以便启用它的DoubleBuffering。 而已! class CustomDataGridView: DataGridView { public CustomDataGridView() { DoubleBuffered = true; } } 只要我所有的网格实例都使用这个定制版本,一切都很好。 如果我遇到由于无法使用子类解决scheme(如果我没有代码)而导致的情况,我想我可以尝试将该控件注入到表单中:) 会更有可能尝试使用reflection从外部强制DoubleBuffered属性,以再次避免依赖 )。 很遗憾,这么一个简单的东西吃了这么多的时间…

WPF DataGrid – 列中的button,从Click事件处理程序中获取它所在的行

我已经将WPF Datagrid的itemsource设置为从我的DAL返回的对象列表。 我还添加了一个包含button的额外列,下面是xaml。 <toolkit:DataGridTemplateColumn MinWidth="100" Header="View"> <toolkit:DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Click="Button_Click">View Details</Button> </DataTemplate> </toolkit:DataGridTemplateColumn.CellTemplate> </toolkit:DataGridTemplateColumn> 这呈现罚款。 然而,在Button_Click方法,有没有什么办法可以得到button所在的数据网格上的行? 更具体地说,我的对象的属性之一是“ID”,我希望能够传递到事件处理程序中的另一种forms的构造函数。 private void Button_Click(object sender, RoutedEventArgs e) { //I need to know which row this button is on so I can retrieve the "id" } 也许我需要在xaml中额外添加一些东西,或者我可以用迂回的方式来解决这个问题? 任何帮助/build议表示赞赏。

Datagridview – 删除第一列之前的部分

我想知道如果使用datagridview控件,你可以删除第一列之前的东西。 我认为它用来select行,但不知道它叫什么。

如何自动调整DataGridView控件中的列的大小,并允许用户调整同一网格上的列?

我在Windows窗体(C#2.0不是WPF)上填充DataGridView控件。 我的目标是显示一个整齐地用单元格填充所有可用宽度的网格 – 即在右侧没有未使用的(深灰色)区域,并根据其包含的数据适当地调整每一列的大小,还允许用户调整任何列的大小根据他们的喜好。 我试图通过设置每个列的AutoSizeMode为DataGridViewAutoSizeColumnMode.AllCells,除了我设置为DataGridViewAutoSizeColumnMode.Fill的列之一,以确保网格的整个区域整齐地填充数据。 (我不介意当用户试图调整这个列的大小时,它会弹回到确保水平空间总是被使用的大小。) 但是,正如我所提到的,一旦加载,我希望允许用户调整列的大小以适应自己的需求 – 为每个列设置这些AutoSizeMode值,然后用户无法再调整这些列的大小。 我已经尝试不设置允许resize的所有列的AutoSizeMode,但不根据单元格包含的数据设置初始大小。 加载数据后,将网格的AutoSizeMode更改回“Not Set”时,会出现相同的结果。 有没有我在这里丢失的设置,允许自动设置默认列宽和用户resize,或者有其他技术,我必须填充DataGridView控件时使用?

如何以编程方式将新行添加到datagridview

如果将行添加到DataTable DataRow row = datatable1.NewRow(); row["column2"]="column2"; row["column6"]="column6"; datatable1.Rows.Add(row); DataGridView怎么样?

DataGridViewcheckbox事件

我有一个winforms应用程序,并希望触发一些代码时embedded在DataGridView控件中的checkbox被选中/取消选中。 每一个事件我都尝试过 触发一旦CheckBox被点击,但在它的检查状态改变之前,或 只有在CheckBox失去焦点时触发 我似乎无法find检查状态改变后立即触发的事件。 编辑: 我想实现的是,当一个DataGridView CheckBox的选中状态发生更改时,其他两个DataGridView的数据会发生更改。 然而,我所使用的所有事件,其他网格中的数据仅在第一个DataGridView的CheckBox失去焦点后才发生变化。

我如何实现DataGridView的自动sorting?

我正在编程添加列到DataGridView,然后绑定到列表。 默认情况下,列的SortMode是自动的。 但是当我运行我的应用程序,点击标题什么都不做。 上/下箭头不显示。 从阅读MSDN,关于自动sorting并不多。 他们进入更多关于程序化sorting的细节。 所以,我假设自动方式应该很容易。 MSDN继续说:“ 除非使用列标题进行select , 否则单击列标题将自动按此列对DataGridView进行sorting,并显示指示sorting顺序的字形。 这到底是什么意思? 我可以设置与sorting冲突的网格属性吗? 我错过了什么? AutoGenerateColumns = false; AllowUserToAddRows = false; AllowUserToDeleteRows = false; AllowUserToResizeRows = false; AllowUserToResizeColumns = false; ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; ReadOnly = true; MultiSelect = false; RowHeadersVisible = false; SelectionMode = DataGridViewSelectionMode.FullRowSelect; CellBorderStyle = DataGridViewCellBorderStyle.None; DataGridViewTextBoxColumn idColumn = new DataGridViewTextBoxColumn(); idColumn.HeaderText = "ID"; […]

如何处理Datagridviewbutton列中的单击事件?

我正在开发一个使用C#的Windows应用程序。 我正在使用DataGridView来显示数据。 我已经添加了一个button列。 我想知道如何处理DataGridView中该button上的单击事件。