DataGridView 中Cell没有提供现成的类似于TextBoxChange事件。如需实现此功能,可以用如下方法:
private void Form6_Load(object sender, EventArgs e)
{
dataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);
}
void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control.GetType().Name == "DataGridViewTextBoxEditingControl")//cell为类TextBox时
{
DataGridViewTextBoxEditingControl editingControl = e.Control as DataGridViewTextBoxEditingControl;
editingControl.TextChanged += new EventHandler(editingControl_TextChanged);
}
}
void editingControl_TextChanged(object sender, EventArgs e)
{
Console.WriteLine(dataGridView1.CurrentCell.EditedFormattedValue);
Console.WriteLine((sender as TextBox).Text);
}
用LuaNet实现如上逻辑如下:
function InitInputTable()
luanet.load_assembly("System");
luanet.load_assembly("System.Windows.Forms");
luanet.load_assembly("System.Data");
customerDataGridView = GetSMObjectByScope("workSpaceID.sub12.name1");
customerDataGridView.AllowUserToAddRows = true;
--注册EditingControlShowing事件
customerDataGridView.EditingControlShowing:Add(dataGridView1_EditingControlShowing)
end
function dataGridView1_EditingControlShowing(sender, e)
if (e.Control:GetType().Name == "DataGridViewTextBoxEditingControl") then
--注册TextChanged事件
e.Control.TextChanged:Add(editingControl_TextChanged);
end
end
function editingControl_TextChanged(sender, e)
SetProperty("workSpaceID.sub12.TextBox1","Text",sender.Text);
end