Как я могу добавить пробелы между элементами управления groupBox? - PullRequest
0 голосов
/ 24 апреля 2020

Вверху:

private int gap = 0;

Затем в событии нажатия кнопки:

private void btnADD_Click(object sender, EventArgs e)
        {
            var fsd = new FolderSelectDialog();
            fsd.Title = "What to select";
            fsd.InitialDirectory = @"c:\";
            if (fsd.ShowDialog(IntPtr.Zero))
            {
                AddGroupBox(Path.GetFileName(fsd.FileName));
            }
        }

И метод AddGroupBox:

private void AddGroupBox(string Name)
        {
            gap = gap + 83;
            GroupBox gb = new GroupBox();
            gb.Location = new Point(3, gap);
            gb.Size = new Size(1311, 100);
            gb.BackColor = SystemColors.Window;
            gb.Text = Name;
            this.Controls.Add(gb);
        }

Первый раз местоположение для y это 83 в следующий раз, когда местоположение находится на y 166, но новый groupBox на 1660 все еще является частью касания или внутри первого groupBox.

Я не хочу промежуток между ними, я хочу, чтобы границы первого и следующего будут касаться друг друга, как одна общая граница вверху нового и внизу первого. и то же самое при добавлении нового groupBox каждый раз.

1 Ответ

1 голос
/ 24 апреля 2020

Так много способов сделать это ...

Как насчет просто сохранить последний помещенный GroupBox и использовать его свойство Bounds.Bottom? Если эта переменная равна нулю, поместите ее в начальную позицию 83.

Что-то вроде:

private int startingY = 83;
private GroupBox lastGB = null;

private void AddGroupBox(string Name)
{
    GroupBox gb = new GroupBox();
    gb.Location = new Point(3, (lastGB==null ? startingY : lastGB.Bounds.Bottom));
    gb.Size = new Size(1311, 100);
    gb.BackColor = SystemColors.Window;
    gb.Text = Name;
    this.Controls.Add(gb);

    lastGB = gb;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...