Tag: datagridview

如何在datagridview列标题中显示图像?

在运行时,我将一个DataGridView添加到Windows窗体。 最后一列是DataGridViewImageColumn : Dim InfoIconColumn As New DataGridViewImageColumn MyDataGridView.Columns.Insert(MyDataGridView.Columns.Count, InfoIconColumn) 添加以下代码将使我的信息图标(位图)显示在每个列单元格中,但不显示在列标题中: Dim InfoIcon As New Bitmap(“C:\MyPath\InfoIcon.bmp”) InfoIconColumn.Image = InfoIcon 此外,值得注意的是,图像在细胞中“完美”显示,即它的大小正确以适合细胞。 但是,我找不到将相同图像添加到列标题单元格的方法。 经过一些谷歌搜索后,我使用下面的代码将图像放在标题单元格中,但给我留下了两个问题: 图像没有像添加到列单元格时那样对列标题单元“自动resize”。 图像略大且模糊。 通过使用_CellPainting事件减慢性能,即当hover在DataGridView以突出显示所选行时,突出显示落后于放置鼠标的位置。 这是代码: Private Sub MyDataGridView_CellPainting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles MyDataGridView.CellPainting Dim InfoIcon As Image = Image.FromFile(“C:\MyPath\InfoIcon.bmp”) If e.RowIndex = -1 AndAlso e.ColumnIndex = MyDataGridView.Columns.Count – 1 Then […]

如何使用文本框在数据网格视图中搜索数据?

这是我目前的代码: private void searchTextBox_TextChanged(object sender, EventArgs e) { (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format(“Name='{0}'”, searchTextBox.Text); } 但是,每当我在文本框中输入内容时,我的数据网格表都会过滤所有内容并变为空白。 知道为什么吗? 先感谢您!

当控件是数据绑定时,无法以编程方式将行添加到datagridview的行集合中

首先,我在这里查找了这个相关的问题,但解决方案dataGridView1.Rows.Add()在我的情况下不起作用。 在我的Datagridview中,我有3个TextBox用于数据输入,2个ComboBox用于用户选择值(绑定到数据库中)。 我的一个TextBox被设置为只读,以便用户只能在数据网格外部填充它(使用普通的TexBox和一个Button)。 当用户用数据填充DataGridView时,底部总是有一个空行; 所以我禁用了这个,我用这个代码阻止用户在datagrid中添加一个新行… dataGridView1.AllowUserToAddRows = false 我只想在用户单击上面提到的按钮时添加一个新行(这会引发错误)。 我得到的错误信息是: “当控件受数据绑定时,无法以编程方式将行添加到datagridview的行集合中” 带有红色箭头的那个是ComboBox,带绿色箭头的那个是只读的TextBox

C#:自定义DataGridView

我需要使用自然排序(在资源管理器中)对DataGridView进行排序,以便数字和文本(在同一列中)自然排序,而不是按字母顺序排序(以便“位置3”位于“位置20”之前,等等)。 我有一个DataGridView,我将DataView设置为DataSource。 DataView包含一个DataTable,它是使用数据库中的某些值创建的。 列类型是字符串。 我有一个IComparer,它做了应有的事情,但我无法弄清楚如何使用它,因为我无法找到如何进行排序。 DataGridView.SortCompare事件是完美的 ,因为它是数据绑定的,所以不起作用。 DataView.Sort只接受具有列名和排序顺序的字符串。 很烦人。 试图在StackOverflow上阅读相关问题,并搜索谷歌的很多和很多,但我真的找不到这个。 只有我真正找到的东西是使用dataview的Sort(字符串)方法,因为它按字母顺序排序。 有没有人知道如何做到这一点没有太多麻烦? 它应该是别人而不是我这个? 我真的不想重新实现整个datagridview或dataview类,只是为了获得自定义排序… 更新 :如果有人想知道,我仍然在寻找这个问题的好答案。 虽然与此同时,我最终创建了自己的简单表类,然后手动将其提供给datagridview。 覆盖SortCompare方法。 有点烦人,但不是太难,因为我只需要显示值(没有编辑或任何东西),因此可以将所有内容转换为字符串。

从C#中的DataGridView读取数据

如何从C#中的DataGridView读取数据? 我想读一下表中的数据。 如何浏览线条?

如何在Enter键按下事件的数据视图中将焦点移动到下一个单元格

朋友们,我正在使用C#处理Windows应用程序。 我正在使用datagridview来显示记录。 我需要的function是当我按下“Enter”键时,焦点应该转到下一个单元格(同一行的列)。 如果它是网格中的最后一列,那么焦点应该转到下一行的第一列。 我已经尝试过了 SendKeys.Send(“{Tab}”) 在datagridview1_KeyDown和datagridview1_KeyPress事件中。 但重点是对角线向下移动。 请帮我解决这个问题。

DataGridViewComboBoxCell绑定 – “值无效”

我正在尝试将DataGridView中的单独ComboBox单元绑定到自定义类,并继续收到错误 DataGridViewComboBoxCell值无效 我目前正在从我所拥有的词典中将单元格的数据源分配给IList 。 但是,在设置数据源时,未设置ComboBoxCell的索引,因此选择了无效值。 我试图弄清楚如何让它选择一个真正的值,例如列表中的第0项,它已被删除此错误,或找到解决问题的另一种方法。 有人有什么建议吗?

单击即可打开下拉列表(在数据网格视图中)项目

如何避免双击DataGridView使用的DropDownButton ? 现在,我可以通过单击两次或多次来查看DataGridView的下拉项。 第一次选择单元格,第二次单击DropDownButton箭头时,它显示列表。 如何通过一次点击实现同样的目标?

关闭子表单时如何刷新datagridview?

我在我的主窗体上有一个dgv,有一个按钮可以打开另一个窗体,将一些数据插入到与dgv绑定的数据源中。 我希望当子窗体关闭dgv自动刷新时。 我试图在子窗体关闭事件中添加它,但它不刷新: private void frmNew_FormClosing(object sender, FormClosingEventArgs e) { frmMain frmm = new frmMain(); frmm.itemCategoryBindingSource.EndEdit(); frmm.itemsTableAdapter.Fill(myDatabaseDataSet.Items); frmm.dataGridView1.Refresh(); } 但是,当我在父窗体上的按钮中添加此代码时,它实际上可以解决这个问题: this.itemCategoryBindingSource.EndEdit(); this.itemsTableAdapter.Fill(myDatabaseDataSet.Items); this.dataGridView1.Refresh();

DataGridView使用SortableBindingList

我有一个返回IList 的函数,它是DataGridView的DataSource。 我了解到DataGridView不会对IList进行排序。 我读了这个stackoverflow Q&A ,我正在尝试实现SortableBindingList。 我一定做错了,因为我的DataGridView是空的。 我还尝试使用TextBox从SortableBindingSource访问一个元素,但也没有。 using Microsoft.SqlServer.Management.Controls; public partial class Form1 : Form { IBusinessLayer businessLayer; IList categories; SortableBindingList catSortable; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { businessLayer = new BusinessLayer(); categories = businessLayer.GetAllCategories(); catSortable = new SortableBindingList(categories); categoryBindingSource.DataSource = catSortable; categoryDataGridView.DataSource = categoryBindingSource; textBox1.Text = catSortable[0].CategoryName; […]