文本框值未在BindingContext更改事件上更改

时间:2013-12-29 09:58:25

标签: c# binding textbox

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

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

然后我在DataSet的文本框中使用NextRecordIndex或填充值。我想要的是,只要单击下一个按钮执行以下代码,下一条记录就会自动填充。

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

2 个答案:

答案 0 :(得分:0)

您是否在收听BindingContextChanged事件?也许您需要将一个事件委托添加到文本框的BindingContextChanged事件中,或者覆盖它的派生类..

答案 1 :(得分:0)

您需要实现事件处理程序。为此,请创建成员函数,每次在文本控件中发生事件时都应调用该函数。要收听此事件,请将创建的成员函数附加(注册)到文本框的事件委托。现在每次文本框触发其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 Event

还有一些关于.NET事件的基础知识 Events (C# Programming Guide)

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

class MyCustomTextBox : TextBox
{...}

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

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