我在Windows Forms项目中工作,我必须动态创建DataGridViews,用一个DataTable填充它们,然后根据另一个DataTable格式化单元格。代码是这样的:
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);
}
我的问题是在绑定DataSource之后完全配置DataGridView之前调用format_grid方法,所以我不能像我需要那样在格式化期间引用单个单元格。所以我需要将format_grid方法(或其功能)链接到DataBindingComplete事件。我一直在搜索,发现this和this之类的内容。
Lambda语句似乎是要走的路,但我无法使其发挥作用。总会有某种语法错误阻止我编译。任何人都可以解释如何做到这一点吗?
答案 0 :(得分:0)
我相信你正在走上正轨,这只是让语法正确的问题。尝试:
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);
}