"DataGridViewCell.Value = x" 没有……什么都没有?
"DataGridViewCell.Value = x" does... nothing?
我正在尝试在释放 ctrl 键时更改一组选定单元格的值。
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.ControlKey)
{
foreach (DataGridViewCell c in dataGridView1.SelectedCells)
{
c.ReadOnly = false;
c.Style.BackColor = colorDialog1.Color;
c.ValueType = currentSymbol.GetType();
c.Value = currentSymbol;
dataGridView1.BeginEdit(true);
dataGridView1.EndEdit();
}
}
}
出于某种原因,行 "c.Value = currentSymbol;" 没有任何作用。
c.Value 无缘无故保持为空。
我已经尝试了所有我能想到的方法,但 Value 成员仍然为 null。
我开始记起为什么我停止使用默认的 dataGridView,使用它们是一个令人沮丧的噩梦,而且从不按照文档行事。不幸的是我必须为这个项目使用一个。
我在这里错过了什么?我从来没有见过一个 set 命令在没有抛出任何错误的情况下简单地违反。
编辑:对 OP 有用的是删除他的 DataGridVeiw 并添加一个新的,分配事件处理程序等。
试试这个对我有用的例子。制作一个新的 C# winforms 应用程序并放置一个 datagridview。
using System;
using System.Windows.Forms;
using System.Drawing;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
var c = new DataGridViewTextBoxCell();
c.ReadOnly = false;
this.dataGridView1.Columns.Add(new DataGridViewColumn(c));
this.dataGridView1.Rows.Add(5);
this.dataGridView1.KeyUp += new KeyEventHandler(dataGridView1_KeyUp);
}
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
var currentSymbol = "test";
if (e.KeyCode == Keys.ControlKey)
{
foreach (DataGridViewCell c in dataGridView1.SelectedCells)
{
c.ReadOnly = false;
c.Style.BackColor = Color.White;
c.Style.ForeColor = Color.Black;
c.ValueType = currentSymbol.GetType();
c.Value = currentSymbol;
dataGridView1.BeginEdit(true);
dataGridView1.EndEdit();
}
}
}
}
}
如果它也适用于您,那么您的示例中一定有其他地方您的做法有所不同。
我正在尝试在释放 ctrl 键时更改一组选定单元格的值。
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.ControlKey)
{
foreach (DataGridViewCell c in dataGridView1.SelectedCells)
{
c.ReadOnly = false;
c.Style.BackColor = colorDialog1.Color;
c.ValueType = currentSymbol.GetType();
c.Value = currentSymbol;
dataGridView1.BeginEdit(true);
dataGridView1.EndEdit();
}
}
}
出于某种原因,行 "c.Value = currentSymbol;" 没有任何作用。
c.Value 无缘无故保持为空。
我已经尝试了所有我能想到的方法,但 Value 成员仍然为 null。
我开始记起为什么我停止使用默认的 dataGridView,使用它们是一个令人沮丧的噩梦,而且从不按照文档行事。不幸的是我必须为这个项目使用一个。
我在这里错过了什么?我从来没有见过一个 set 命令在没有抛出任何错误的情况下简单地违反。
编辑:对 OP 有用的是删除他的 DataGridVeiw 并添加一个新的,分配事件处理程序等。
试试这个对我有用的例子。制作一个新的 C# winforms 应用程序并放置一个 datagridview。
using System;
using System.Windows.Forms;
using System.Drawing;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
var c = new DataGridViewTextBoxCell();
c.ReadOnly = false;
this.dataGridView1.Columns.Add(new DataGridViewColumn(c));
this.dataGridView1.Rows.Add(5);
this.dataGridView1.KeyUp += new KeyEventHandler(dataGridView1_KeyUp);
}
private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
{
var currentSymbol = "test";
if (e.KeyCode == Keys.ControlKey)
{
foreach (DataGridViewCell c in dataGridView1.SelectedCells)
{
c.ReadOnly = false;
c.Style.BackColor = Color.White;
c.Style.ForeColor = Color.Black;
c.ValueType = currentSymbol.GetType();
c.Value = currentSymbol;
dataGridView1.BeginEdit(true);
dataGridView1.EndEdit();
}
}
}
}
}
如果它也适用于您,那么您的示例中一定有其他地方您的做法有所不同。