C# – MDI 부모창 스크롤 제거

MDI로 개발시 자식창을 부모창영역 밖으로 이동하면 부모창에 스크롤이 생기는데..
이게 거슬린다면 적용해보시기 바랍니다.

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace MdiScroll
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            MyNativeWindows na = new MyNativeWindows();

            for (int i = 0; i < this.Controls.Count; i++)
            {
                MdiClient mdiClient = this.Controls[i] as MdiClient;
                if (mdiClient != null)
                {
                    na.ReleaseHandle();
                    na.AssignHandle(mdiClient.Handle);
                }
            }

            //for (int i = 0 ; i<10; i++)
            //{
            //    Form f = new Form();
            //    f.MdiParent = this;
            //    f.Show();
            //}
        }
    }

    public class MyNativeWindows : NativeWindow
    {
        public MyNativeWindows()
        {
        }

        private const int WM_NCCALCSIZE = 0x0083;
        private const int SB_BOTH = 3;

        [DllImport("user32.dll")]
        private static extern int ShowScrollBar(IntPtr hWnd, int wBar, int bShow);

        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case WM_NCCALCSIZE:
                    ShowScrollBar(m.HWnd, SB_BOTH, 0);
                    break;
            }
            base.WndProc(ref m);
        }
    }
}

 

사용자 삽입 이미지

Notice

  • 이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용할 수 있습니다. 크리에이티브 커먼즈 라이선스
  • 저작권과 관련된 파일요청 및 작업요청을 받지 않습니다.
  • 댓글에 대한 답변은 늦을 수도 있습니다.
  • 1 댓글

    답글 남기기

    이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다