Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > SplitContainer


Автор: IEZ 17.8.2008, 00:57
Приветствую Всех!
Пишу прогу с динамически собираемым интерфейсом, т.е.
прикрепляю TreeView в панели на SplitContainer.
Но есть проблема.

Внешний вид должен получиться такой (см.аттач). 

Автор: IEZ 17.8.2008, 00:58
А получается так (см. аттач).
Т.е. SplitContainer заползает под меню и панель инструментов и может под строку состояния.

Вот весь текст примера приложения:

Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Test
{
    public partial class Form1 : Form
    {
        SplitContainer splitContainer1 = null;

        TreeView treeView1 = null;
        TreeView treeView2 = null;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            treeView1 = new System.Windows.Forms.TreeView();
            treeView1.Dock = System.Windows.Forms.DockStyle.Fill;
            treeView1.Nodes.Add("treeView");

            treeView2 = new System.Windows.Forms.TreeView();
            treeView2.Dock = System.Windows.Forms.DockStyle.Fill;
            treeView2.Nodes.Add("treeView");

            splitContainer1 = new System.Windows.Forms.SplitContainer();

            splitContainer1.Anchor = AnchorStyles.Top | AnchorStyles.Left;
            splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
            splitContainer1.Name = "splitContainer1";
            splitContainer1.Size = new System.Drawing.Size(this.Width, this.Height);
            splitContainer1.SplitterDistance = 230;
            splitContainer1.TabIndex = 0;

            splitContainer1.Panel1.Controls.Add(treeView1);
            splitContainer1.Panel2.Controls.Add(treeView2);

            this.Controls.Add(splitContainer1);
        }

        private void saveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            treeView1.Dispose();
            treeView2.Dispose();
            splitContainer1.Dispose();
        }
    }
}




Что нужно сделать, чтобы исправить проблему?
Спасибо.

Автор: QryStaL 17.8.2008, 03:33
Вместо

Код

this.Controls.Add(splitContainer1);


пиши так:

Код

this.toolStripContainer1.ContentPanel.Controls.Add(splitContainer1);

Автор: IEZ 17.8.2008, 16:51
Цитата(QryStaL @  17.8.2008,  03:33 Найти цитируемый пост)
пиши так:

Выделить всёкод C#
1:
    
this.toolStripContainer1.ContentPanel.Controls.Add(splitContainer1);

Чего-то не понятная строка.

Но у меня другой косяк в проге.
Не пойму, заменил TreeView на ListView (как указано в измененном коде)
и все, не работает. И не могу понять почему такой бред.

Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Test
{
    public partial class Form1 : Form
    {
        SplitContainer splitContainer1 = null;

        ListView listView1 = null;
        ListView listView2 = null;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ListViewItem item1 = null;
            ListViewItem item2 = null;
            ListViewItem item3 = null;

            listView1 = new ListView();
            listView1.Dock = System.Windows.Forms.DockStyle.Top;

            listView1.View = View.Details;
            listView1.AllowColumnReorder = true;
            listView1.CheckBoxes = true;
            listView1.FullRowSelect = true;
            listView1.GridLines = true;
            listView1.Sorting = SortOrder.Ascending;

            item1 = new ListViewItem("item1", 0);
            item1.Checked = true;
            item1.SubItems.Add("1");
            item1.SubItems.Add("2");
            item1.SubItems.Add("3");
            item2 = new ListViewItem("item2", 1);
            item2.SubItems.Add("4");
            item2.SubItems.Add("5");
            item2.SubItems.Add("6");
            item3 = new ListViewItem("item3", 0);
            item3.Checked = true;
            item3.SubItems.Add("7");
            item3.SubItems.Add("8");
            item3.SubItems.Add("9");

            listView1.Columns.Add("Item Column", -2, HorizontalAlignment.Left);
            listView1.Columns.Add("Column 2", -2, HorizontalAlignment.Left);
            listView1.Columns.Add("Column 3", -2, HorizontalAlignment.Left);
            listView1.Columns.Add("Column 4", -2, HorizontalAlignment.Center);

            listView1.Items.AddRange(new ListViewItem[] { item1, item2, item3 });




            listView2 = new ListView();
            listView2.Dock = System.Windows.Forms.DockStyle.Top;

            listView2.View = View.Details;
            listView2.AllowColumnReorder = true;
            listView2.CheckBoxes = true;
            listView2.FullRowSelect = true;
            listView2.GridLines = true;
            listView2.Sorting = SortOrder.Ascending;

            item1 = new ListViewItem("item1", 0);
            item1.Checked = true;
            item1.SubItems.Add("1");
            item1.SubItems.Add("2");
            item1.SubItems.Add("3");
            item2 = new ListViewItem("item2", 1);
            item2.SubItems.Add("4");
            item2.SubItems.Add("5");
            item2.SubItems.Add("6");
            item3 = new ListViewItem("item3", 0);
            item3.Checked = true;
            item3.SubItems.Add("7");
            item3.SubItems.Add("8");
            item3.SubItems.Add("9");

            listView2.Columns.Add("Item Column", -2, HorizontalAlignment.Left);
            listView2.Columns.Add("Column 2", -2, HorizontalAlignment.Left);
            listView2.Columns.Add("Column 3", -2, HorizontalAlignment.Left);
            listView2.Columns.Add("Column 4", -2, HorizontalAlignment.Center);

            listView2.Items.AddRange(new ListViewItem[] { item1, item2, item3 });



            splitContainer1 = new System.Windows.Forms.SplitContainer();

            splitContainer1.Anchor = AnchorStyles.Top | AnchorStyles.Left;
            splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
            splitContainer1.Name = "splitContainer1";
            splitContainer1.Size = new System.Drawing.Size(this.Width, this.Height);
            splitContainer1.SplitterDistance = 230;
            splitContainer1.TabIndex = 0;
            splitContainer1.BorderStyle = BorderStyle.Fixed3D;

            splitContainer1.Panel1.Controls.Add(listView1);
            splitContainer1.Panel2.Controls.Add(listView2);

            this.Controls.Add(splitContainer1);

            splitContainer1.BringToFront();
        }

        private void saveToolStripMenuItem_Click(object sender, EventArgs e)
        {
            listView1.Dispose();
            listView2.Dispose();
            splitContainer1.Dispose();
        }
    }
}


Результат в аттаче.

Автор: Partizan 20.8.2008, 11:37
listView1.Dock = System.Windows.Forms.DockStyle.Fill;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)