将 "DataBindingComplete" 事件处理程序与自定义输入相关联

Linking "DataBindingComplete" event handler with custom input

我在一个 Windows Forms 项目中工作,我必须动态创建 DataGridView,用一个 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);
}

我的问题是 format_grid 方法在绑定 DataSource 后完全配置 DataGridView 之前被调用,所以我无法在格式化期间像我需要的那样引用单个单元格。所以我需要link format_grid 方法(或其功能)到DataBindingComplete 事件。我一直在四处搜索并找到了 this and this 之类的东西。

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