【问题标题】:Textbox values not changing on BindingContext Changed eventBindingContext Changed 事件上的文本框值未更改
【发布时间】:2013-12-29 09:58:25
【问题描述】:

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

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

然后我使用 NextRecordIndex 来填充来自 DataSet 的文本框中的值。我希望在单击下一步按钮时执行以下代码后,应自动填充下一条记录。

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

【问题讨论】:

    标签: c# binding textbox


    【解决方案1】:

    你在监听 BindingContextChanged 事件吗?也许您需要向文本框的 BindingContextChanged 事件添加一个事件委托,或者在它的派生类中覆盖。

    【讨论】:

    • 没有。我想知道怎么做。 BindingContextChanged 事件我想用它来显示上一个、下一个记录。我需要采用什么方法?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-06-22
      • 1970-01-01
      • 2010-11-01
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多