Articles of datagridview

冻结的最后一行DataGridView作为列的总和?

是否可以将DataGridView的最后一行作为列的总和,并且最后一行始终显示/被冻结?

添加行时,DataGridView抛出“InvalidOperationException:Operation无效…”

我想在用户点击单元格时出现OpenFileDialog,然后在单元格中显示结果。 这一切都有效,除了DataGridView显示一个额外的行,用于将值添加到它所绑定的列表中。 如果dataGridView.AllowUserToAddNewRows == true ,则显示该行,这就是我想要的。 我不想要的是当以编程方式编辑该行时应用程序崩溃; 相反,它应该完全按照用户手动编辑该行的方式执行(将新行添加到基础列表,将另一个空行推入网格以添加值)。 我读到了SendKeys.Send(),它应该使DataGridView的行为与用户输入的值完全相同; 但是,它也不起作用。 这是我正在尝试的: if (openFileDialog1.ShowDialog() == DialogResult.OK) { dataGridView1.CurrentCell = cell; //simply doing a cell.Value = etc. will cause the program to crash cell.ReadOnly = false; dataGridView1.Columns[cell.ColumnIndex].ReadOnly = false; dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter; dataGridView1.BeginEdit(true); SendKeys.Send(openFileDialog1.FileName + “{Enter}”); dataGridView1.EndEdit(); cell.ReadOnly = true; dataGridView1.Columns[cell.ColumnIndex].ReadOnly = true; } //I would expect […]

WinForm绑定单选按钮

我使用VS2010,然后将Member datagridview拖放到设计视图中。 之后,我将名称成员文本字段拖放到设计视图,然后尝试编辑和保存。 它运作正常。 然后我拖放性爱单选按钮来设计视图。 但绑定它不起作用。 我怎么能在这种情况下绑定? using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Test7 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void memberBindingNavigatorSaveItem_Click(object sender, EventArgs e) { this.Validate(); this.memberBindingSource.EndEdit(); this.tableAdapterManager.UpdateAll(this.dbDataSet); } private void Form1_Load(object sender, EventArgs e) […]

如何在multithreading应用程序中安全地填充数据和Refresh()DataGridView?

我的应用程序有一个DataGridView对象和一个MousePos类型的List。 MousePos是一个自定义类,它包含鼠标X,Y坐标(“Point”类型)和此位置的运行计数。 我有一个线程(System.Timers.Timer)每秒引发一次事件,检查鼠标位置,添加和/或更新此列表上鼠标位置的计数。 我想有一个类似的运行线程(再次,我认为System.Timers.Timer是一个不错的选择),它会再次引发一次事件,每秒自动刷新()DataGridView,以便用户可以看到数据屏幕更新。 (就像TaskManager一样。) 不幸的是,调用DataGridView.Refresh()方法会导致VS2005停止执行,并注意到我遇到了跨线程的情况。 如果我理解正确,我现在有3个主题: 主UI线程 MousePos List线程(Timer) DataGridView刷新线程(计时器) 为了看看我是否可以在主线程上刷新()DataGridView,我在表单中添加了一个名为DataGridView.Refresh()的按钮,但这(奇怪的是)没有做任何事情。 我发现了一个似乎表明如果我设置DataGridView.DataSource = null并返回到我的List的主题,它会刷新datagrid。 确实这有效,但只能通过按钮(在主线程上处理)。 所以这个问题变成了两个问题: 将DataGridView.DataSource设置为null并返回到我的List是一种可接受的刷新数据网格的方法吗? (对我来说似乎效率低下……) 如何在multithreading环境中安全地执行此操作? 这是我到目前为止编写的代码(C#/。Net 2.0) public partial class Form1 : Form { private static List mousePositionList = new List(); private static System.Timers.Timer mouseCheck = new System.Timers.Timer(1000); private static System.Timers.Timer refreshWindow = new System.Timers.Timer(1000); public Form1() { InitializeComponent(); mousePositionList.Add(new […]

如何将值插入DataGridView Cell?

我有DataGridView (包含任何DataBase ) 我想在任何Cell中插入任何值(并且该值将保存在DataBase上) 怎么做(在C#中) 提前致谢

C#将DataTable绑定到现有的DataGridView列定义

我一直在努力处理NullReferenceException并希望有人能指出我正确的方向。 我正在尝试创建并填充DataTable,然后在DataGridView控件中显示结果。 接下来是基本代码,Execution在我调用新的UpdateResults_Delegate时停止并显示NullReferenceException。 奇怪的是,我可以在从QueryEventEntries返回之前成功跟踪entries.Rows.Count,因此我至少可以显示1)条目不是空引用,2)DataTable包含数据行。 我知道我必须做错事,但我不知道是什么。 private void UpdateResults(DataTable entries) { dataGridView.DataSource = entries; } private void button_Click(object sender, EventArgs e) { PerformQuery(); } private void PerformQuery() { DateTime start = new DateTime(dateTimePicker1.Value.Year, dateTimePicker1.Value.Month, dateTimePicker1.Value.Day, 0, 0, 0); DateTime stop = new DateTime(dateTimePicker2.Value.Year, dateTimePicker2.Value.Month, dateTimePicker2.Value.Day, 0, 0, 0); DataTable entries = QueryEventEntries(start, stop); UpdateResults(entries); } private […]

如何获取Datagridview Combobox的TEXT选项?

如何获取DataGridView中的Combobox选定项目文本 ? 我尝试使用以下代码: dataGridView1.Rows[1].Cells[1].Value.ToString() 但是,这会给出与此单元格关联的值,而不是Combobox选定的项目文本。 我也试过这个: DataGridViewComboBoxCell cell = dataGridView1[1,1] as DataGridViewComboBoxCell; string value = cell.Value.ToString(); 但是,这也没有帮助。 我很感激你的帮助。 提前致谢! 编辑: 比方说,我们有一个Combobox文本为No和Yes ,值分别为0和1。 当我想改变时,我想要的是文本Yes或No 。 但我得到的是使用上述代码的值0/1。 希望能让事情变得清晰。 更新: 好的,所以我一直在研究这个问题,经过很多努力并在我的成员的帮助下,我已经能够解决问题并获得所需的解决方案: 这是解决方案: string SelectedText = Convert.ToString(dataGridView1.Rows[0].Cells[1].FormattedValue.ToString());

将dataGridView中的选定行检索为对象

我有一个这样的课: public partial class AdressBokPerson { public long Session { get; set; } public string Förnamn { get; set; } public string Efternamn { get; set; } public string Mail { get; set; } } 添加到列表中: private readonly List _avp = new List(); 通过绑定到dataGridView,如下所示: dataGridView1.DataSource = _avp; 到现在为止还挺好。 这是我的问题: 当选择dataGridView中的行时,如何找出“哪个”对象被选中。 我需要以某种方式检索所选对象AdressBokPerson 。

如何在DataGridViewComboBox中显示枚举类型成员?

为了在DatagridViewComboBox中显示ReadAccess枚举成员,我还需要做些什么? ReadDataGridViewComboBoxColumn.Items.Clear(); ReadDataGridViewComboBoxColumn.Items.AddRange(ReadAccess.None, ReadAccess.Allowed); ReadDataGridViewComboBoxColumn.ValueType = typeof(ReadAccess); 这是关于DataGridView的设计器生成的代码: this.rolesDataGridView.AutoGenerateColumns = false; this.rolesDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.TableNameDataGridViewTextBoxColumn, this.ReadDataGridViewComboBoxColumn, this.WriteDataGridViewComboBoxColumn, this.ReadCodeDataGridViewComboBoxColumn, this.ProcessDataGridViewCheckBoxColumn, this.AdministrateDataGridViewCheckBoxColumn}); this.rolesDataGridView.DataSource = this.bsTablePermissions; 最后,在InitializeComponent(); ,我正在设置DataGridView的DataSource: this.rolesDataGridView.DataSource = this.RoleTablePermissions; // a bindingsource list

在DataGridView中显示2d数组

我有一个2D数组。 我想在我的DataGridView打印数组,但它会抛出一个错误: [参数OutOfRangeException未处理] 这是我的代码 for (int j = 0; j < height; j++) { for (int i = 0; i < width; i++) { dataGridView1[i, j].Value = state[i, j].h; //state[i, j].h this is my array dataGridView1[i, j].Style.BackColor pixelcolor[i,j]; dataGridView1[i, j].Style.ForeColor = Color.Gold; } }