none
关于控件数据源绑定的BindingManagerBase问题? RRS feed

  • 问题

  • 两个地方百思不得其解:

    一、新建BindingManagerBase后,在调用其类型居然变成了Relatedpropertymanager。

    比如:

    dim 数据绑定 as BindingManagerBase

    数据绑定 = form1.textbox1.bindingcontext(dataset1,"表格名称")

    数据绑定.gettype().fullname.to.string

    结果就是:Relatedpropertymanager。很蹊跷吧!

    二、准备提交修改结果进行保存的时候,使用EndCurrentEdit方法,居然提示一大堆:

    比如:

    数据绑定.EndCurrentEdit()

    结果就是:

    是不是更蹊跷呢,哪里来的with变量呢!


    2012年9月26日 4:02

答案

全部回复

  • 数据绑定我建议你TextBox应该绑定的是.DataBindings方法,而不是使用BindingManagerBase-这是一个针对窗体的BindingContext方法。假设窗体上有一个TextBox,有一个“向后”,“向前”和“保存”的按钮,请看我的做法:

    Public Partial Class Form1 Inherits Form Private ds As New DataSet() Private dt As New DataTable("Test") Private mbase As BindingManagerBase = Nothing Public Sub New() InitializeComponent() dt.Columns.Add("name", GetType(String)) For i As Integer = 1 To 10 dt.Rows.Add("姓名" & i) Next ds.Tables.Add(dt) '绑定数据源 mbase = BindingContext(ds, "Test") textBox1.DataBindings.Add("Text", ds, "Test.name") End Sub

    Private Sub button1_Click(sender As Object, e As EventArgs) If mbase.Position > 0 Then mbase.Position -= 1 End If End Sub Private Sub button2_Click(sender As Object, e As EventArgs) If mbase.Position < dt.Rows.Count Then mbase.Position += 1 End If End Sub Private Sub button3_Click(sender As Object, e As EventArgs) mbase.EndCurrentEdit() End Sub End Class


    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年9月26日 7:04
    版主
  • 我用的是同样的方法啊。

    又发现:您的代码中的这里

    '绑定数据源
    mbase
    = BindingContext(ds, "Test")
    有错误提示:BindingContext是一个类型,不能用作表达式。

    我的方法是在文本框的数据源指定之后,再指定BindingManagerBase 的数据源。

    textBox1.DataBindings.Add("Text", ds, "Test.name")
    mbase = textBox1.BindingContext(ds, "Test")

    2012年9月26日 8:16
  • 2012年9月27日 0:29
    版主
  • 第二疑问已经解决了,是自己准备的控件数组溢出了。

    前面一个还是没搞清楚。虽然也能运行。

    2012年9月27日 3:37
  • 第二疑问已经解决了,是自己准备的控件数组溢出了。

    前面一个还是没搞清楚。虽然也能运行。

    第一个蹊跷:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.bindingmanagerbase(v=vs.80).aspx 是一个虚类,当你实例化后,它必然有一个具体的类型,这个Relatedpropertymanager,就是这个具体的类型,而你的bindingmanagerBase只是一个父类。这个方法默认是返回当前实例的实际类型名

    数据绑定.gettype().fullname.to.string 


    Mike Feng
    MSDN Community Support | Feedback to us
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年9月28日 9:28
    版主