Проблема выравнивания WinForms FlowLayoutPanel - PullRequest
0 голосов
/ 05 марта 2019

Когда я нажимаю на кнопку в моей панели Floqlayout, они должны прятаться в том месте, где я их нажимал.Но вместо этого они исчезают, и все остальные кнопки перемещаются.

Они должны прятаться на своем месте

They should hide at their place

Но это то, что происходит

But this is what happens

Как создать мои кнопки:

 private void CreateButton()
    {
        int buttonIndex = 0;
        for (int i = 0; i < 16; i++)
        {
            Button button = new Button();
            button.Name = $"Button_{buttonIndex}";
            button.Width = 100;
            button.Height = 100;
            button.Click += OnButtonClick;
            button.BackgroundImage = BackSideImage();

            flowLayoutPanel1.Controls.Add(button);

            buttonIndex++;
        }
    }

Как скрыть мои кнопки:

private void CompareCards()
    {
        if (clickedCards.Count >= 3)
        {

                if (clickedCards[0].PairIndex == clickedCards[1].PairIndex)
                {
                    clickedCards[0].Button.Hide();
                    clickedCards[1].Button.Hide();
                }
                else
                {
                   clickedCards[0].Button.BackgroundImage = BackSideImage();
                   clickedCards[1].Button.BackgroundImage = BackSideImage();
                }

                clickedCards.Clear();
        }
    }

1 Ответ

0 голосов
/ 05 марта 2019

Вместо того, чтобы скрывать свою кнопку, вы можете сделать ее невидимой, например:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        for (int x = 0; x < 9; x++)
        {
            var button = new Button
            {
                Name = "Test-" + x,
                Text = "Test-" + x,
                Width = 100,
                Height = 100
            };

            button.Click += OnButtonClick;
      flowLayoutPanel1.Controls.Add(button);
        }
    }

    private void OnButtonClick(object sender, EventArgs e)
    {
        //Instead of this...
        //((Button)sender).Hide();

        //Do this...
        var button = ((Button) sender);
        button.FlatStyle = FlatStyle.Flat;
        button.FlatAppearance.BorderColor = BackColor;
        button.FlatAppearance.MouseOverBackColor = BackColor;
        button.FlatAppearance.MouseDownBackColor = BackColor;
        button.Text = string.Empty;
        button.Enabled = false;
    }
}
...