首先最少要把基窗体方法中的private改为protected;基窗体中定义应这样:
protected virtual void setControlsState()
{
  //...
}
其次在子窗体中这样写:protected override void setControlsState()
{
  //这里加上一些控制语句
  //...
  base.setControlsState();
}

解决方案 »

  1.   

    继承窗体中想这样:
    private override setControlsState()
    {
      base.setControlsState()//这里加上一些控制语句
    }
      

  2.   

    void 可以换成你需要的其它类型
      

  3.   

    父窗体使用protected 修饰符
    protected void Test()
    {
    MessageBox.Show("Test Form1");
    }
    子窗体使用new关键字
    protected new void Test()
    {
    MessageBox.Show("Test Form2");
    base.Test();
    }
      

  4.   

    ps:如果父窗体不需要实现,也可以用virtual /override关键字
      

  5.   

    基窗體里這樣寫:
    protected virtual void SetControlsState(string csstr)
    {
    }繼承窗體里這樣寫, 但出錯
    protected override void setControlsState(string cstr)   //error occur: no suitable method found to override
    {
    MessageBox.Show("SetControlState");
    base.setControlsState();
    }
      

  6.   

    一般情况下,最好不用new关键字,因为大多数情况下,是要重写方法,而不是隐藏方法,且隐藏方法会有 为给定类的实例调用错误方法的潜在危险。  另,用virtual 不影响父窗体中的实现。
      

  7.   

    to derek:base.setControlsState();改为base.setControlsState(一个字符串);