добавление кнопок динамически - PullRequest
0 голосов
/ 02 февраля 2012

Я создаю форму, и при загрузке она получает все изображения из моей папки ресурсов и для каждого файла создает новую кнопку, устанавливает фоновое изображение кнопок для этого изображения и добавляет эту кнопку в форму, но она только отображает 1 кнопка и в папке ресурсов 36 файлов.

Мой код выглядит следующим образом:

ResourceSet resourceSet = Resources.ResourceManager.GetResourceSet(CultureInfo.CurrentUICulture, true, true);
foreach (DictionaryEntry entry in resourceSet)
{
    object resource = entry.Value;
    Button b = new Button();
    b.BackgroundImage = (Image)resource;
    b.BackgroundImageLayout = ImageLayout.Stretch;
    b.Height = 64;
    b.Width = 64;
    this.Controls.Add(b);
}

Пожалуйста, помогите, что я делаю неправильно.

1 Ответ

5 голосов
/ 02 февраля 2012

Я предполагаю, что код действительно добавляет все кнопки, но все они расположены друг над другом.Каждая кнопка будет иметь значение по умолчанию для Left и Top, и эти значения по умолчанию будут одинаковыми для каждой кнопки.Поскольку все кнопки имеют одинаковый размер, видна только верхняя кнопка.

Решите проблему, установив свойства Left и Top для каждой кнопки.Очевидно, что каждая отдельная кнопка должна иметь различное значение для Left и Top.


Чтобы ответить на вопрос, который вы задаете в комментарии, вы можете использовать код в следующих строках:

const int buttonSize = 64;
int left = 0;
int top = 0;
foreach (DictionaryEntry entry in resourceSet)
{
    object resource = entry.Value;
    Button b = new Button();
    b.BackgroundImage = (Image)resource;
    b.BackgroundImageLayout = ImageLayout.Stretch;
    b.Bounds = Rectangle(left, top, buttonSize, buttonSize);
    this.Controls.Add(b);

    // prepare for next iteration
    left += buttonSize;
    if (left+buttonSize>this.ClientSize.Width)
    {
        left = 0;
        top += 64;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...