链接" DataBindingComplete"自定义输入的事件处理程序

时间:2015-03-19 14:13:13

标签: c# datagridview lambda event-handling

我在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事件。我一直在搜索,发现thisthis之类的内容。

Lambda语句似乎是要走的路,但我无法使其发挥作用。总会有某种语法错误阻止我编译。任何人都可以解释如何做到这一点吗?

1 个答案:

答案 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);
}