FormLayoutPanel, Не меняя направление при использовании LinkLabels

Я пытаюсь использовать FlowLayoutPanel с linkLabels в Visual Studio для быстрого проекта. Я выбрал "TopDown" для направления и обтекания в false. Когда я запускаю программу; однако направление всегда показывает слева направо. Есть ли коробка или что-то, что я не проверил? Или есть какая-то причина, по которой ленточная метка будет игнорировать направление потока?

Вот мой код и несколько скриншотов того, что я вижу.

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

namespace myProject
{
public partial class Form1 : Form
{
    FlowLayoutPanel panel = new FlowLayoutPanel();


    public Form1()
    {
        InitializeComponent();

        linkLabel1.LinkClicked += linkLabel1_LinkClicked;
        linkLabel2.LinkClicked += linkLabel2_LinkClicked;
        linkLabel3.LinkClicked += linkLabel3_LinkClicked;

        Controls.Add(panel);
        panel.Controls.Add(linkLabel1);
        panel.Controls.Add(linkLabel2);
        panel.Controls.Add(linkLabel3);
    }

    private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        panel.Controls.SetChildIndex(linkLabel1, 0);
    }

    private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        panel.Controls.SetChildIndex(linkLabel2, 0);
    }

    private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        panel.Controls.SetChildIndex(linkLabel3, 0);
    }


  }
}

Это контрольный вид до того, как я запустил программу. Это контрольная программа

Это то, что я вижу при запуске программы - отмечено красной стрелкой.

1 ответ

Решение

Поскольку вы инициализируете свой FlowLayoutPanel в коде позади, вы должны установить свойство FlowDirection этого нового экземпляра FlowLayoutPanel в том же коде сзади:

    FlowLayoutPanel panel = new FlowLayoutPanel();
    public Form1()
    {
        InitializeComponent();
        panel.FlowDirection = FlowDirection.TopDown;

FlowLayoutPanel, который вы объявляете в своем коде, отличается от того, который есть в вашем макете, поэтому свойство FlowDirection не устанавливается таким же. Я протестировал приведенный выше код и считаю, что он делает то, что вы искали.

Другие вопросы по тегам