BindingContext Changed事件的文本框值未更改



当前,为了在单击下一个按钮时更改表单中文本字段中显示的记录,我正在使用以下代码以编程方式将下一个记录的值分配给相关文本框:

int CurrentRowIndex = this.BindingContext[DS1, "Table1"].Position;
int NextRoecordIndex = CurrentRowIndex + 1;

然后,我使用NextRecordIndex来填充数据集中文本框中的值。我希望一旦点击下一个按钮执行下面的代码,下一个记录就会自动填充。

this.BindingContext[DS1, "Table"].Position -= 1;

您正在侦听BindingContextChanged事件吗?也许您需要向文本框的BindingContextChanged事件添加事件委托,或者在其派生类中重写。。

您需要实现事件处理程序。为此,创建成员函数,每次事件在文本控件中发生时都会调用该函数。要收听此事件,请将您创建的成员函数附加(注册)到文本框的事件委托。现在,每次文本框触发BindingContextchanged事件时,都会调用附加到其委托的所有函数。

创建每次事件发生时要调用的函数。

private void AssignNextRecordIndex_OnBindingContextChanged(object sender, EventArgs e) 
{
// do ur task on bindingcontext changed
}

添加或注册以侦听事件:

MyTextBox.BindingContextChanged += AssignNextRecordIndex_OnBindingContextChanged;

就是这样。

要分离或停止侦听此事件(如果必要),请使用:

MyTextBox.BindingContextChanged -= AssignNextRecordIndex_OnBindingContextChanged;

您可以将任意多个函数附加到事件中。

您还可以在MSDN上找到有关此特别活动的信息:Control.BindingContextChanged事件

以及一些关于.NET中事件的基础知识事件(C#编程指南)

如果您创建了自己的自定义TextBox控件,如:

class MyCustomTextBox : TextBox
{...}

您可以重写继承的OnBindingContextChanged方法(不要忘记调用基方法):

protected override void OnBindingContextChanged(EventArgs e)
{
base.OnBindingContextChanged(e);
// do your stuff
}

最新更新