Tag: datagridview

如何在DataGridViewCell中托管控件以进行显示和编辑?

我已经看到如何:Windows窗体DataGridView单元中的主机控件,它解释了如何托管用于编辑DataGridView中的单元格的控件。 但是如何托管用于显示单元格的控件? 我需要在同一个单元格中显示文件名和按钮。 我们的UI设计师是一个平面设计师,而不是程序员,因此我必须将代码与他所绘制的内容相匹配,无论是否可行 – 或明智 – 或不是。 我们正在使用VS2008并使用C#编写.NET 3.5,如果这有所不同的话。 更新:’网络建议创建一个自定义DataGridViewCell,它作为第一步主持一个面板; 有谁做过吗?

如何在Xml中保存DatagridView并将Xml加载到datagridView?

嗨,我想将数据从datagridview保存并加载到xml。 我的想法是我可以将我的datagridview保存到xml如何 – >“[date] _ [name] .xml”以后我可以加载这些数据。 对于这两个操作,我想使用两个方法 – > Save()和Load() 这是我保存的代码: private void Save(DataGridView grid) { try { xmlfile = @”C:\datagrid.xml”; dataset = (DataSet)InputDataGrid.DataSource; dataset.WriteXml(xmlfile); } catch (Exception ex) { MessageBox.Show(ex.Message); } } 我怎么能这样做?

C#网格绑定不更新

我有一个绑定到集合的网格。 由于某种原因,我不知道,现在当我在网格中执行某些操作时,网格不会更新。 情况:当我单击网格中的按钮时,它会增加同一行中的值。 当我单击时,我可以调试并查看值增量,但值不会在网格中更改。 但是,当我单击按钮,最小化并恢复窗口时,值会更新…我需要做什么才能像以前一样更新值? 更新这个没有解决,但我接受了这里的最佳答案。 它没有解决,因为当数据来自数据库而不是来自缓存时,它可以用作usuall。 对象被序列化并抛出事件丢失的过程。 这就是为什么我重新构建它们并且它适用于我所知道的因为我可以与它们进行交互但是它看起来因为未知原因而不能用于更新网格。

当DataSource是BindingList时过滤BindingSource

我从excel表中读取并为BindingList写了这个,在Form_Load中,这被设置为一个DataSource作为BindingSource: bd = new BindingSource(); //instance of BindingSource bd.DataSource = ExcelOPS.LerExcel(); //LerExcel() method return a BindingList gvFiltro.DataSource = bd; //set a DataGridView named gvFiltro DataSource property bindNav.BindingSource = bd; //set a BindingNavigator source 这个工作很好! 我打算为这个DataGridView gvFiltro创建一个combobox作为filter,所以在combobox的SelectedIndexChanged事件中,我试试这个: this.gvFiltro.DataSource = null; bd.Filter = string.Format(“TAG_FAZENDA like ‘%{0}%'”, cbTagFaz.Text); gvFiltro.DataSource = bd; gvFiltro.Update(); gvFiltro.Refresh(); bindNav.BindingSource = bd; bindNav.Update(); bindNav.Refresh(); […]

DataGridView CellPainting不能完全在Scroll上工作

第一篇文章,但长时间浏览器:) 所以这是我的问题:基本上我有一个datagridview,我用它来与用户交互。 在所有的行中,都有一个“信息”按钮,它会产生这样一种错觉:它在它下面添加了另一行,所有的单元格都被合并了(一个长单元格跨过整个行)并绘制描述它上面一行的文本和图像到“信息单元”。 这很有效,除非垂直滚动数据网格视图,然后看起来没有调用绘画并且网格看起来乱糟糟。 有任何想法吗? 以下是代码的基本概要: private void grid_CellPainting(object sender, DataGridViewCellPaintingEventArgs e){ // Loop through and draw all of the open information rows foreach (int i in openInfoCells) { if (i >= grid.FirstDisplayedCell.RowIndex && i <= (grid.DisplayedRowCount(true) + grid.FirstDisplayedCell.RowIndex)) { // Draw Rectangle …. // Draw Text or Image …. } } }

C#用Combobox替换DataGridView中的默认文本框

我仍然是C#的新手,但我正在开发一个从Access数据库中提取数据的WinForms应用程序。 我目前正在处理一个表单,该表单使用DataAdapter和DataSet动态地将表中的内容加载到DataGridView中。 到目前为止,表单正在按预期工作。 目前,要添加新记录,您必须在一行中的每个单元格中键入数据。 我想要做的是用combobox替换几列(文本框)。 换句话说,不是手动输入数据,而是使用下拉combobox并从列表中选择条目。 我还想从SQL生成combobox数据成员但是如果这太多了,我可以手动编写每个项目的代码。 我可以在运行时向datagridview添加一个combobox,但这不是我想要做的。 由于列是在运行时通过代码创建的,我不知道如何修改该方法后面的列。 因此,例如,我想用“R”,“PG-13”,“PG”等组合成员替换“Rating”的文本框单元格。 public partial class frmBulkInsert : Form { OleDbConnection conn; OleDbDataAdapter da; DataSet ds; OleDbCommandBuilder cmdbl; public frmBulkInsert() { InitializeComponent(); } private void frmBulkInsert_Load_1(object sender, EventArgs e) { // Load all records from the table into the datagridview. try { dataConnectionSettings(); } catch (Exception ex) { […]

在dataGridView中更改垂直滚动条的宽度

我正在为触摸屏开发应用程序。 我被要求使滚动条的大小更大,以便用户可以使用它们。 到目前为止,我还没有能够对此进行排序。 我读到如果你增加MainForm窗口滚动条的宽度,那么dataGridView将inheritance它。 我尝试过一些东西,但到目前为止还没有让它发挥作用。 我尝试的两种最接近的方式是 1)当我构建网格时,我添加以下内容 foreach (Control ctrl in dataGridView1.Controls) if (ctrl.GetType() == typeof(VScrollBar)) ctrl.Width = 86; 不幸的是,这似乎得到宽度为17但不能用这个86的新值覆盖它。 接下来我把它放到我构建MainForm的地方仍然没有好处,垂直滚动条仍然看起来一样。 2)我发现我可以从工具箱中添加滚动条。 这里有一点进展,直到我尝试连接到dataGridView。 这个我做不到。 我有一个事件所以每次移动我都应该能够移动网格。 下面注释掉的是我用来确保获得价值的一些项目。 private void vScrollBar1_Scroll(object sender, ScrollEventArgs e) { //MessageBox.Show(vScrollBar1.Value.ToString()); // MessageBox.Show(SystemInformation.VerticalScrollBarWidth.ToString()); // CalculateVerticalScrollbarWidth() * 4; } 所以我想我会问比我更高智商的观众,因为有人可能已经解决了这个问题,并会与我分享答案。

DataGridView导航到下一行

我有一个C#winforms应用程序,我正在尝试使用一个按钮,在选择一个之后将选择datagridview中的下一行。 我到目前为止的代码是: private void button4_Click(object sender, EventArgs e) { try { Int32 selectedRowCount = dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected); // index out of range on this line dataGridView1.Rows[dataGridView1.SelectedRows[selectedRowCount].Index].Selected = true; dataGridView1.FirstDisplayedScrollingRowIndex = selectedRowCount + 1; } catch (Exception ex) { return; } 但是在运行它时会引发exception。 任何人都可以指出我可能出错的地方。 抛出的错误是: Index is out of range

如何向datagridview添加filter

我正在尝试将csv文件加载到datagridview,现在我想向datagridview添加过滤 怎么做? 这是我如何阅读和加载csv文件 openFileDialog1.InitialDirectory = @”C:\”; openFileDialog1.Title = “Open CSV Files”; openFileDialog1.CheckFileExists = true; openFileDialog1.CheckPathExists = true; openFileDialog1.DefaultExt = “CSV”; openFileDialog1.Filter = “CSV files (*.csv)|*.csv|All files(*.*)|*.*”; openFileDialog1.FilterIndex = 1; openFileDialog1.RestoreDirectory = true; try { if (openFileDialog1.ShowDialog() == DialogResult.OK) { string csvPath = openFileDialog1.FileName; string rowValue; // int rowValue = int.Parse(??); string[] cellValue; dataGridView1.Rows.Clear(); //dataGridView1.Columns.Clear(); if […]

C#windows应用程序访问数据库数据不会在关闭时持续存在

我正在使用C#创建一个Windows应用程序,我正在访问一个空的Access数据库,其中包含两个表:省和位置。 我正在处理只处理省份表的表单,如下所示: 这是一个子表单。 当它打开时,我可以插入/更新记录等。每当我进行更改时,我单击“加载表”按钮以显示DataGridView对象中的更改。 如果我关闭此子窗体并再次显示它,我可以单击“加载表”按钮并调用DataGridView对象中显示的所有数据。 但是,如果我完全关闭应用程序,那么我将丢失所有数据。 我通过双击数据库文件在Access中启动它来certificate这一点,我可以看到数据肯定已经消失。 这已成为一个谜,因为我无法弄清楚为什么数据不会在文件中持久存在。 请指教。 以下是表单的代码。 您可以从我的方法中看到,我每次执行函数时都要小心关闭连接对象。 所以我不知道为什么我一直在丢失关于应用程序关闭的数据? using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.OleDb; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace GTI_Taxi_Pricing { public partial class frmProv : Form { private OleDbConnection connection = new OleDbConnection(); public frmProv() { InitializeComponent(); connection.ConnectionString = @”Provider=Microsoft.ACE.OLEDB.12.0;Data […]