Compartilhar via


Como: Criar uma interface de usuário Multipane com Windows Forms

O procedimento a seguir, você irá criar uma interface de usuário multipane semelhante à usada no Microsoft Outlook, com um Pasta lista, a Mensagens painel e um Visualização painel. Essa organização é obtida principalmente através de controles com o formulário de encaixe.

Quando você ancorar um controle, você determina qual borda do contêiner pai de um controle está firmemente ao. Portanto, se você conjunto o Dock propriedade para Right, a borda direita do controle será ser encaixada à borda direita do controle pai. Além disso, a borda do controle encaixada é redimensionada para corresponder do seu controle de contêiner. Para obter mais informações sobre como a Dock propriedade funciona, consulte Como: Encaixe Controls on Windows Forms.

Este procedimento se concentra em Organizando o SplitContainer e a outros controles no formulário, não sobre a adição de funcionalidade para tornar o aplicativo imitar o Microsoft Outlook.

Para criar essa interface de usuário, é colocar todos os controles dentro de um SplitContainer controle, que contém um TreeView controle no painel esquerdo. O painel direito do SplitContainer controle contém um segundo SplitContainer controle com um ListView controle acima uma RichTextBox controle. Esses SplitContainer controles permitem redimensionar independente dos outros controles no formulário. Você pode adaptar as técnicas neste procedimento para criar interfaces do usuário personalizada seus próprios.

Para criar uma interface de usuário do Outlook-estilo programaticamente

  1. Em um formulário, declare cada controle que compõem a interface do usuário. Para esse exemplo, use o TreeView, ListView, SplitContainer, e RichTextBox controles para imitar a interface do usuário do Microsoft Outlook.

    Private WithEvents treeView1 As System.Windows.Forms.TreeView
    Private WithEvents listView1 As System.Windows.Forms.ListView
    Private WithEvents richTextBox1 As System.Windows.Forms.RichTextBox
    Private WithEvents splitContainer1 As _
        System.Windows.Forms.SplitContainer
    Private WithEvents splitContainer2 As _
        System.Windows.Forms.SplitContainer
    
    private System.Windows.Forms.TreeView treeView1;
    private System.Windows.Forms.ListView listView1;
    private System.Windows.Forms.RichTextBox richTextBox1;
    private System.Windows.Forms. SplitContainer splitContainer2;
    private System.Windows.Forms. SplitContainer splitContainer1;
    
    private System.Windows.Forms.TreeView treeView1;
    private System.Windows.Forms.ListView listView1;
    private System.Windows.Forms.RichTextBox richTextBox1;
    private System.Windows.Forms.SplitContainer splitContainer2;
    private System.Windows.Forms.SplitContainer splitContainer1;
    
  2. Crie um procedimento que define a interface do usuário. O código a seguir define as propriedades para que o formulário será semelhante a interface do usuário no Microsoft Outlook. No entanto, usando outros controles ou encaixe-los diferente, é fácil criar outras interfaces de usuário são igualmente flexíveis.

    Public Sub CreateOutlookUI()
        ' Create an instance of each control being used.
        Me.components = New System.ComponentModel.Container()
        Me.treeView1 = New System.Windows.Forms.TreeView()
        Me.listView1 = New System.Windows.Forms.ListView()
        Me.richTextBox1 = New System.Windows.Forms.RichTextBox()
        Me.splitContainer1 = New System.Windows.Forms.SplitContainer()
        Me.splitContainer2= New System.Windows.Forms. SplitContainer()
    
        ' Should you develop this into a working application,
        ' use the AddHandler method to hook up event procedures here.
    
        ' Set properties of TreeView control.
        ' Use the With statement to avoid repetitive code.
        With Me.treeView1
            .Dock = System.Windows.Forms.DockStyle.Fill
            .TabIndex = 0
            .Nodes.Add("treeView")
        End With
    
    ' Set properties of ListView control.
       With Me.listView1
          .Dock = System.Windows.Forms.DockStyle.Top
          .TabIndex = 2
          .Items.Add("listView")
       End With
    
    ' Set properties of RichTextBox control.
       With Me.richTextBox1
          .Dock = System.Windows.Forms.DockStyle.Fill
          .TabIndex = 3
          .Text = "richTextBox1"
       End With
    
        ' Set properties of the first SplitContainer control.
        With Me.splitContainer1
            .Dock = System.Windows.Forms.DockStyle.Fill
            .TabIndex = 1
            .SplitterWidth = 4
            .SplitterDistance = 150
            .Orientation = Orientation.Horizontal
            .Panel1.Controls.Add(Me.listView1)
            .Panel2.Controls.Add(Me.richTextBox1)
    End With
    
        ' Set properties of the second SplitContainer control.
        With Me.splitContainer2
            .Dock = System.Windows.Forms.DockStyle.Fill
            .TabIndex = 4
            .SplitterWidth = 4
            .SplitterDistance = 100
            .Panel1.Controls.Add(Me.treeView1)
            .Panel2.Controls.Add(Me.SplitContainer1)
    End With
    
    ' Add the main SplitContainer control to the form.
        Me.Controls.Add(Me.splitContainer2)
        Me.Text = "Intricate UI Example"
    End Sub
    
    public void createOutlookUI()
    {
        // Create an instance of each control being used.
        treeView1 = new System.Windows.Forms.TreeView();
        listView1 = new System.Windows.Forms.ListView();
        richTextBox1 = new System.Windows.Forms.RichTextBox();
        splitContainer2 = new System.Windows.Forms.SplitContainer();
        splitContainer1 = new System.Windows.Forms.SplitContainer();
    
        // Insert code here to hook up event methods.
    
        // Set properties of TreeView control.
        treeView1.Dock = System.Windows.Forms.DockStyle.Fill;
        treeView1.TabIndex = 0;
        treeView1.Nodes.Add("treeView");
    
        // Set properties of ListView control.
        listView1.Dock = System.Windows.Forms.DockStyle.Top;
        listView1.TabIndex = 2;
        listView1.Items.Add("listView");
    
        // Set properties of RichTextBox control.
        richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
        richTextBox1.TabIndex = 3;
        richTextBox1.Text = "richTextBox1";
    
        // Set properties of first SplitContainer control.
        splitContainer1.Dock = System.Windows.Forms.DockStyle.Fil1;
        splitContainer2.TabIndex = 1;
        splitContainer2.SplitterWidth = 4;
        splitContainer2.SplitterDistance = 150;
        splitContainer2.Orientation = Orientation.Horizontal;
        splitContainer2.Panel1.Controls.Add(this.listView1);
        splitContainer2.Panel1.Controls.Add(this.richTextBox1);
    
        // Set properties of second SplitContainer control.
        splitContainer2.Dock = System.Windows.Forms.DockStyle.Fil1;
        splitContainer2.TabIndex = 4;
        splitContainer2.SplitterWidth = 4;
        splitContainer2.SplitterDistance = 100;
        splitContainer2.Panel1.Controls.Add(this.treeView1);
        splitContainer2.Panel1.Controls.Add(this.splitContainer1);
    
        // Add the main SplitContainer control to the form.
        this.Controls.Add(this.splitContainer2);
        this.Text = "Intricate UI Example";
    }
    
    public void createOutlookUI()
    {
    // Create an instance of each control being used.
    treeView1 = new System.Windows.Forms.TreeView();
    listView1 = new System.Windows.Forms.ListView();
    richTextBox1 = new System.Windows.Forms.RichTextBox();
    splitContainer2 = new System.Windows.Forms.SplitContainer();
    splitContainer1 = new System.Windows.Forms.SplitContainer();
    
    // Insert code here to hook up event methods.
    
    // Set properties of TreeView control.
    treeView1.set_Dock(System.Windows.Forms.DockStyle.Fill);
    treeView1.set_TabIndex(0);
    treeView1.get_Nodes().Add("treeView");
    
    // Set properties of ListView control.
    listView1.set_Dock(System.Windows.Forms.DockStyle.Top);
    listView1.set_TabIndex(2);
    listView1.get_Items().Add("listView");
    
    // Set properties of RichTextBox control.
    richTextBox1.set_Dock(System.Windows.Forms.DockStyle.Fill);
    richTextBox1.set_TabIndex(3);
    richTextBox1.set_Text("richTextBox1");
    
    // Set properties of first SplitContainer control.
    splitContainer1.set_Dock(System.Windows.Forms.DockStyle.Fill);
    splitContainer2.set_TabIndex(1);
    splitContainer2.set_SplitterWidth(4);
    splitContainer2.set_SplitterDistance(150);
    splitContainer2.set_Orientation(Orientation.Horizontal);
    splitContainer2.get_Panel1().get_Controls().Add(this.listView1);
    splitContainer2.get_Panel1().get_Controls().Add(this.richTextBox1);
    
    // Set properties of second SplitContainer control.
    splitContainer2.set_Dock(System.Windows.Forms.DockStyle.Fill);
    splitContainer2.set_TabIndex(4);
    splitContainer2.set_SplitterWidth(4);
    splitContainer2.set_SplitterDistance(100);
    splitContainer2.get_Panel1().get_Controls().Add(this.treeView1);
    splitContainer2.get_Panel1().get_Controls().Add(this.splitContainer1);
    
    // Add the main SplitContainer control to the form.
    this.get_Controls().Add(this.splitContainer2);
    this.set_Text("Intricate UI Example");
    }
    
  3. In Visual Basic, adicione uma telefonar para o procedimento que você acabou de criar o New() procedimento. In Visual C#, adicione esta linha de código para o construtor da classe de formulário.

    ' Add this to the New procedure.
    CreateOutlookUI()
    
    // Add this to the form class's constructor.
    createOutlookUI();
    
    // Add this to the form class's constructor.
    createOutlookUI();
    

Consulte também

Tarefas

Exemplo de Controlarar SplitContainer

Referência

SplitContainer

Outros recursos

Controle SplitContainer (Windows Forms)