我有两个窗口
一个MainForm,一个是SettingBox
为什么我只要把SettingBox原本的
namespace Serial_Debug
{
    public partial class SettingBox : Form
    {
        public SettingBox()
        {
            InitializeComponent();
        }
    }
}
改成
namespace Serial_Debug
{
    public partial class SettingBox : Serial_Debug.MainForm
    {
        public SettingBox()
        {
            InitializeComponent();
        }
    }
}
一运行立马就死机,而且完全没办法结束,只能强制关机了。。

解决方案 »

  1.   

    Serial_Debug.MainForm中有没有创建或者调用SettingBox的代码?造成循环引用了。
      

  2.   

    有调用,只有这几句,问题出在哪?
    SettingBox settingBox = new SettingBox();
    private void 端口设置ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                settingBox.StartPosition = FormStartPosition.CenterParent;
                settingBox.ShowDialog();   
            }
      

  3.   

    那就不能继承
    至少你不能再在主窗口里面用无参数的构造函数调用settingbox
    否则settingbox的构造函数调用前试图创建主窗口的实例(继承关系),在主窗口中又调用settingbox构造函数,导致循环引用。
      

  4.   

    你这样继承会导致死循环的。
    MainForm中的SettingBox settingBox = new SettingBox();
    会调用SettingBox的构造函数,而你的SettingBox又是继承了MainForm,有会继续调用...这样就死循环了。