MdiLayout.TileVertical не работает правильно - PullRequest
0 голосов
/ 05 июня 2018

Я использовал форму MDI в C # для отображения нескольких окон.Когда я использовал MdiLayout.TileVertical, чтобы изменить расположение дочерних окон, я не смог получить правильный результат.Дочерние окна не отображались вертикально.

Я хотел получить результат:

1

2

3

4

Что я получил:

3 1

4 2

Мой код источника:

[STAThread]
    static void Main() 
    {            
        Application.Run(new Form1());
    }

    private void menuItemNew_Click(object sender, System.EventArgs e)
    {
        oFileDlg.CheckFileExists=true;
        oFileDlg.CheckPathExists=true;
        oFileDlg.Title="Open File - MDI Sample";
        oFileDlg.ValidateNames=true;
        oFileDlg.Filter = "jpg files (*.jpg)|*.jpg";

        if (oFileDlg.ShowDialog() == DialogResult.OK)
        {   
            try
            {
                //Create a new instance of the MDI child template form
                Form2 chForm = new Form2();
                //set parent form for the child window
                chForm.MdiParent=this;

                //increment the child form count
                count ++;
                //set the title of the child window.
                chForm.Text= "Child - " + count.ToString();

                chForm.fileloc=oFileDlg.FileName;

                chForm.FormBorderStyle = FormBorderStyle.Sizable;

                //display the child window
                chForm.Show();                  
            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.ToString(), "MDI Sample", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }

    private void menuItemClose_Click(object sender, System.EventArgs e)
    {
        //Gets the currently active MDI child window.
        //Form a = this.ActiveMdiChild;
        //Close the MDI child window
        //a.Close();

        this.Close();
    }       

    private void menuItemAI_Click(object sender, System.EventArgs e)
    {
        //Arrange MDI child icons within the client region of the MDI parent form.
        this.LayoutMdi(System.Windows.Forms.MdiLayout.ArrangeIcons);
    }

    private void menuItemCas_Click(object sender, System.EventArgs e)
    {
        //Cascade all child forms.
        this.LayoutMdi(System.Windows.Forms.MdiLayout.Cascade);
    }

    private void menuItemHoriz_Click(object sender, System.EventArgs e)
    {
        //Tile all child forms horizontally.            
        this.LayoutMdi(System.Windows.Forms.MdiLayout.TileHorizontal);

    }

    private void menuItemVert_Click(object sender, System.EventArgs e)
    {           
        //Tile all child forms vertically.
        //CheckWindows();
        this.LayoutMdi(System.Windows.Forms.MdiLayout.TileVertical);
    }

    private void menuItemMax_Click(object sender, System.EventArgs e)
    {
        //Gets forms that represent the MDI child forms 
        //that are parented to this form in an array
        Form [] charr= this.MdiChildren;

        //for each child form set the window state to Maximized
        foreach (Form chform in charr)
            chform.WindowState=FormWindowState.Maximized;
    }

    private void menuItemMin_Click(object sender, System.EventArgs e)
    {
        //Gets forms that represent the MDI child forms 
        //that are parented to this form in an array
        Form [] charr= this.MdiChildren;

        //for each child form set the window state to Minimized
        foreach (Form chform in charr)
            chform.WindowState=FormWindowState.Minimized;
    }

    private void menuItem1_Click(object sender, System.EventArgs e)
    {
        //Gets forms that represent the MDI child forms 
        //that are parented to this form in an array
        Form [] charr= this.MdiChildren;

        //for each child form set the window state to Minimized
        foreach (Form chform in charr)
            chform.Close();
    }

Есть ли какие-либо идеи по этому вопросу?

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете попробовать сделать стыковку на дочерних формах и выбрать желаемый вывод.

Например: chForm.Dock = DockStyle.Left;

...