C# “链接”;“数据绑定完成”;具有自定义输入的事件处理程序
我在一个Windows窗体项目中工作,我必须动态创建DataGridView,用一个DataTable填充它们,然后根据另一个DataTable格式化单元格。代码如下所示:C# “链接”;“数据绑定完成”;具有自定义输入的事件处理程序,c#,datagridview,lambda,event-handling,C#,Datagridview,Lambda,Event Handling,我在一个Windows窗体项目中工作,我必须动态创建DataGridView,用一个DataTable填充它们,然后根据另一个DataTable格式化单元格。代码如下所示: my_forms_function(){ DataGridView dgv = new DataGridView(); DataTable values = get_values(); DataTable formatting = get_formatting(); dgv.DataSource = valu
my_forms_function(){
DataGridView dgv = new DataGridView();
DataTable values = get_values();
DataTable formatting = get_formatting();
dgv.DataSource = values;
format_grid(dgv, formatting);
WindowsForm.Add(dgv);
}
我的问题是,在绑定数据源之后,在DataGridView完全配置之前调用format_grid方法,因此在格式化过程中我不能像需要的那样引用单个单元格。因此,我需要将format_grid方法(或其功能)链接到DataBindingComplete事件。我一直在四处搜索,发现了像和这样的东西
Lambda语句似乎是一种方法,但我一直无法使它起作用。总有一些语法错误阻止我编译。有人能解释一下怎么做吗?我相信你已经走上正轨了,这只是语法正确的问题。尝试:
dgv.DataBindingComplete += (sender, e) => format_grid(dgv, formatting);
我没有一个完整的示例来复制您的代码,但通过以下简单的示例,它可以工作:
string hello = "Hello World!";
DataTable values = GetValues();
dataGridView1.DataSource = values;
dataGridView1.DataBindingComplete += (sender, e) => this.DoStuff(hello);
private void DoStuff(string text)
{
Console.WriteLine(text);
}
起初对我不起作用,但我终于明白了原因。我正在使用的方法(“my_forms_function()”)也是一个事件触发的方法。所以“sender”和“e”都已经在方法中定义了,这就是我得到语法错误的原因。因此,我更改了父方法中“sender”和“e”的名称,然后可以按照您的建议使用lambda语句。很好用!:)