基类:  class base1:Form
        {
           private base();
           public base(string s1,string s2);
             //里面初始化两个私有字段
            form_load(object sender, eventArg e)
                 {
                    //有用到那两个字段,检查下格式,如果格式不对 会抛出异常
                  }
          }子类  class child1:base1
  {
        public child1();
        public child1(string s1,string s2): base(s1,s2)
               {}   }
这样的话  打开子类的设计器就会报错. 抛出在Form_Load里面的那个异常,说格式不正确. 何解?
构造函数报错我还可以理解. 为什么子类设计器会去Form_load里面运行呢? S1我是依赖于构造函数传进来的,设计器在Form_Load里就把S1当空字符串处理了.

解决方案 »

  1.   

    楼主,你的代码怎么那么乱···第一个类的类名不是base1吗,怎么构造函数就成base了呢??
      

  2.   

    乱七八糟,你在哪调用的form_load
      

  3.   

    form_load和构造函数有什么关系?
      

  4.   

    Form_Load会处理构造函数传进来的两个变量. 
    现在子类开设计器时,就会报错说,那两个变量没有初始化.  
    子类编译通过又可以正常运行的.
    我VS2005
      

  5.   


    +1   http://msdn.microsoft.com/zh-cn/library/system.windows.forms.form.load(VS.80).aspx
      

  6.   

     public partial class OracleSqlBuild : Form
        {
                   #region  构造函数
            protected  OracleSqlBuild()
            {
                InitializeComponent();
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="tableName">要查询的表格的名称,格式为 Schema.TableName 用户名.表名</param>
            /// <param name="conStr">连接字符串</param>
            public OracleSqlBuild(string tableName, string conStr)
            {
                InitializeComponent();
                this.tbl = tableName;
                this.conStr = conStr;
            }        #endregion         /// <summary>
            /// 表名owner.tableName
            /// </summary>
            string tbl = "";
            /// <summary>
            /// 返回的SQL语句
            /// </summary>
            //string sql ="";
            DBAccess2 db2;         DataTable dt1;        /// <summary>
            /// 连接字符串
            /// </summary>
            string conStr="";        private void OracleSqlBuild_Load(object sender, EventArgs e)
            {
                if (!tbl.Contains("."))
                    MessageBox.Show("tableName Error");
             }
            }       public class MsSqlbuild :OracleSqlBuild
        {
            protected MsSqlbuild()
                //: base()
            {
                
            }              public MsSqlbuild(string tableName, string conStr)
                : base(tableName, conStr)
            {
                this.Text = "MsSqlBuild";
                this.tableName = tableName;
                this.conStr = conStr;
            }
            string tableName;
            string conStr;
    }打开子类的设计器界面 ,会报错:tbl未初始化
      

  7.   

    在父类上用了个try catch 将就了