本帖最后由 orayangy 于 2010-03-16 10:47:59 编辑

解决方案 »

  1.   

    TabControl中的TabPage是很奇怪,绑定的时候,如果某个TabPage没有被激活过,对象无法绑定,这一这样,在初期化的时候,用代码把每个TabPage都先选中一次,就可以绑定了
      

  2.   


    难道是要把全部的TabPage都选中一次吗?
      

  3.   

    多谢inmyownsky1 。说说我试过的方法吧。
    1. 
    Form_Load()
    {
      //所有的TabPages 激活
      this.tabPage1.Show();
      this.tabPage1.Hide();  this.tabPage2.Show();
      this.tabPage2.Hide();

    同样出错 DataSource的属性列不能绑定2.
    this.TextBox.DataBindings.Add("Text", tableproperty, "tableproperty.schema");
    this.CheckBox.DataBindings.Add("Checked", tableproperty, "tableproperty.isUpper");
    出错 不能生成tableproperty的子list3.this.tabControl.TabPages["Table"].Show();
    this.tabControl.SelectedTab.CreateControl();
    this.TextBox.DataBindings.Add("Text", tableproperty, "schema");
    this.CheckBox.DataBindings.Add("Checked", tableproperty, "isUpper");
    TabPages 的激活方法改变,换汤不换药,出错 DataSource的属性列不能绑定4.
    this.tabPage2.Show();
    this.tabPage2.Hide();
    this.tabPage1.Show();
    this.TextBox.DataBindings.Add("Text", tableproperty, "schema");
    this.CheckBox.DataBindings.Add("Checked", tableproperty, "isUpper");这个好像是2楼说的做法? 同样出错提示:抛出的例外是  ArgumentException哪位高手帮帮忙啊
     
      

  4.   

    this.tabControl.SelectedIndex = 3
    this.tabControl.SelectedIndex = 2
    this.tabControl.SelectedIndex = 1
    this.tabControl.SelectedIndex = 0这样子试试
      

  5.   


    dg1_1225谢谢你的回答。我按你的方法试了还是出错。
    换个思路想:
    1.是不是DataBindgs不能和自定义的结构体(TableProperty)绑定阿。
    2.DataBindgs.Add使用之前还需要定义写别的什么吗。我的程序中只用了DataBindgs。下面是我的程序
    this.tabControl.SelectedIndex = 3;
    this.tabControl.SelectedIndex = 2;
    this.tabControl.SelectedIndex = 1;
    this.tabControl.SelectedIndex = 0;
    //this.tabControl.SelectedTab = this.tabControl.TabPages["Table"];
    try
    {
     TableProperty tableproperty = new TableProperty("dbo", false);
     this.TextBox.DataBindings.Add("Text", tableproperty, "schema");
    }
    catch(ArgumentException e)
    {
       MessageBox.Show(e.Message);
    }
      

  6.   

    自定义的结构体?
    这个我还真没有试过,我是用DataTable进行绑定的,没有问题
      

  7.   


    我试了试不用TabPage 的控件绑定,结果出错了!!!
    估计问题不是在TabPage上。
      

  8.   


    大概找到问题的答案了。参照下面的文字,自定义的结构体应该是不在绑定源范围内的当使用Binding的构造函数创建实例时,必须指定三项内容:    * 要绑定到的控件属性的名称
        * 数据源
        * 数据源中解析为列表或属性的导航路径其中,数据源可以为:    * 实现 IBindingList 或 ITypedList 的任何类。包括:DataSet、DataTable、DataView 或 DataViewManager。
        * 实现 IList 的任意索引集合类。(必须在创建 Binding 之前创建和填充该集合,并且列表中的所有对象必须为同一类型,否则将引发异常)
        * 强类型对象的强类型 IList。
      

  9.   

    恩,应该是这样,你还是用DataTable或者List吧
      

  10.   

    问题解决了。
    不是自定义结构体的问题。竟然是结构体中忘了写get set方法。哎,,