게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C# MDI 형식 질문 드립니다.
게시물ID : programmer_17370짧은주소 복사하기
작성자 : _비빔밥_
추천 : 0
조회수 : 2690회
댓글수 : 6개
등록시간 : 2016/05/25 17:40:20
옵션
  • 본인삭제금지
데브피아에 글을 올렸었는데 답변이 안와서 물어볼 곳이 없어서 여기다 질문 드립니다.

버튼 클릭시 자식폼간 이동하는 곳에서 계속해서 에러가 나는데요 

부모폼은 버튼만을 가지고 있고 자식폼들은 그 버튼들을 공유합니다.


소스코드)

 public Base()
        {
         
            InitializeComponent();
        }
 
        Form1 main;
        CutLine cutLine;
        DataTable dataTable;
        Manual manual;
        Setting setting;
        LogData logData;
 
        private void Base_Load(object sender, EventArgs e)
        {
            
        }
 
        #region 버튼 이벤트
       
 
        private void btnLogin_Click(object sender, EventArgs e)
        {
            if (defineValue.loginState == defineValue.LOGIN_OFF)
            {
                Login loginChildForm = new Login();
                loginChildForm.ShowDialog();
                this.btnLogin.Text = "로그아웃";
 
            }
            else
            {
                DialogResult dr = MessageBox.Show("정말 로그아웃 하시겠습니까?", "로그인", MessageBoxButtons.OKCancel);
                if (dr == DialogResult.OK)
                {
                    this.btnLogin.Text = "로그인";
                    defineValue.loginState = defineValue.LOGIN_OFF;
                }
            }
          
        }
 
        private void btnMain_Click(object sender, EventArgs e)
        {
        
            if (main == null)
            {
                main = new Form1();
                main.MdiParent = this;
                main.Dock = DockStyle.Fill;
                main.Show();
            }
            else
            {
                foreach (Form form in Application.OpenForms)
                {
                    if (form.GetType() == typeof(Form1))
                    {
                        form.Activate();
                        form.BringToFront();
                        break;
                    }
                }
            }
           
        }
        
        private void btnResultTable_Click(object sender, EventArgs e)
        {
 
            if (dataTable == null)
            {
                dataTable = new DataTable();
                dataTable.MdiParent = this;
                dataTable.Dock = DockStyle.Fill;
                dataTable.Show();
            }
            else
            {
                foreach (Form form in Application.OpenForms)
                {
                    if (form.GetType() == typeof(DataTable))
                    {
                        form.Activate();
                        form.BringToFront();
                        break;
                    }
                }
            }
           
        }
 
        private void btnLogTable_Click(object sender, EventArgs e)
        {
            if (logData == null)
            {
                logData = new LogData();
                logData.MdiParent = this;
                logData.Dock = DockStyle.Fill;
                logData.Show();
            }
            else
            {
                foreach (Form form in Application.OpenForms)
                {
                    if (form.GetType() == typeof(LogData))
                    {
                        form.Activate();
                        form.BringToFront();
                        break;
                    }
                }
            }
          
        }
 
        private void btnRecipe_Click(object sender, EventArgs e)
        {
            if (cutLine == null)
            {
                cutLine = new CutLine();
                cutLine.MdiParent = this;
                cutLine.Dock = DockStyle.Fill;
                cutLine.Show();
            }
            else
            {
                foreach (Form form in Application.OpenForms)
                {
                    if (form.GetType() == typeof(CutLine))
                    {
                        form.Activate();
                        form.BringToFront();
                        break;
                    }
                }
            }
           
        }
 
     
 
        private void btnManual_Click(object sender, EventArgs e)
        {
            if (manual == null)
            {
                manual = new Manual();
                manual.MdiParent = this;
                manual.Dock = DockStyle.Fill;
                manual.Show();
            }
            else
            {
                foreach (Form form in Application.OpenForms)
                {
                    if (form.GetType() == typeof(Manual))
                    {
                        form.Activate();
                        form.BringToFront();
                        break;
                    }
                }
            }
          
        }
 
        private void btnSetting_Click(object sender, EventArgs e)
        {
            if (setting == null)
            {
                setting = new Setting();
                setting.MdiParent = this;
                setting.Dock = DockStyle.Fill;
                setting.Show();
            }
            else
            {
                foreach (Form form in Application.OpenForms)
                {
                    if (form.GetType() == typeof(Setting))
                    {
                        form.Activate();
                        form.BringToFront();
                        break;
                    }
                }
            }
          
        }
  

소스코드는 이렇습니다. 그런데 저는 처음화면 실행시 메인 화면이 나오게 하고 싶어서

base_Load 함수에다 btnMain_Click(sender,e); 이렇게 썼습니다.

그런데 다른 메뉴 버튼을 클릭하면

"이 폼의 MdiParent로 지정한 폼이 MdiContainer가 아닙니다." 이러한 오류가 뜨더라고요

속성에서 부모폼을 제외한 자식폼들은 isMDIcontainer = false 로 했습니다.

Base_load에 아무것도 안쓰고 실행시키니 베이스의 회색화면이 나오고 버튼을 눌러야 제대로 작동되더라구요. 

어떻게 해결하면 좋을지 고수님들의 답변 부탁드립니다.

출처
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호