我有一个使用 List as Data 的带有 bindingSource 的简单 winform。每当绑定源位置发生变化时,我都想采取行动。阅读起来,我需要的是 'positionChanged' 事件。但是,在我的应用程序中,我无法触发此事件。
有一个 bindingNavigator 使用 bindingSoure 进行导航和(用于调试)一个更改当前绑定源位置的按钮。
我试图尽可能简化这一点。我的表单代码如下所示:
public partial class Form1 : Form
{
protected List<int> data;
public Form1()
{
InitializeComponent();
data = new List<int>();
data.Add(4);
data.Add(23);
data.Add(85);
data.Add(32);
}
private void Form1_Load(object sender, EventArgs e)
{
bindingSource1 = new BindingSource();
bindingSource1.DataSource = data;
bindingNavigator1.BindingSource = this.bindingSource1;
}
private void bindingSource1_PositionChanged(object sender, EventArgs e)
{
// Debugger breakpoint here.
// Expectation is this code will be executed either when
// button is clicked, or navigator is used to change positions.
int x = 0;
}
private void button1_Click(object sender, EventArgs e)
{
bindingSource1.Position = 2;
}
}
eventHandler 在设计器中自动生成:
//
// bindingSource1
//
this.bindingSource1.PositionChanged += new System.EventHandler(this.bindingSource1_PositionChanged);
现在,问题是每当我运行它时,'PositionChanged' 事件都不会触发。我已经验证了 bindingSource1.Position 基于导航器和按钮的变化。但无论我做什么,该事件都不会真正触发。我猜在这一点上这是非常愚蠢的事情,或者我完全误解了事件应该何时触发。
使用 .NET 4.5