Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/16: Рейтинг темы: голосов - 16, средняя оценка - 4.56
2 / 2 / 0
Регистрация: 10.10.2011
Сообщений: 4

Динамическое добавление кнопок

11.10.2011, 08:54. Показов 3064. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал примерно вот такое:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public partial class Form1 : Form
    {
        private ContentBrowser MyContentBrowser;
        public Form1()
        {
            InitializeComponent();
            MyContentBrowser = new ContentBrowser();
        }
 
        public static void MyButtonClick(object sender, EventArgs e)
        {
            //MessageBox.Show(((Button)sender).Tag.ToString());
            MyContentBrowser.FolderDown(((Button)sender).Tag.ToString());
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            MyContentBrowser.ReloadButtons(this.Controls, this.Width);
        }
    }
 
    public class ContentBrowser
    {
        //...
 
        public void ReloadButtons(Control.ControlCollection FormControls, int FormWidth)
        {
            //...
            for (int i = 0; i < DirNames.Count(); i++)
            {
                buttons[i] = new Button();
                //...
                buttons[i].Tag = DirNames[i].Name;
                buttons[i].Click += Form1.MyButtonClick;
                FormControls.Add(buttons[i]);
                //...
            }
        }
 
        //...
 
        public void FolderDown(string NewFolder)
        {
            //...
        }
MyButtonClick может быть только static, иначе ругается при привязке события к кнопке. Но тогда выдаёт ошибку внутри "Для нестатического поля, метода или свойства "WindowsFormsApplication1.Form1.MyConten tBrowser" требуется ссылка на объект". Как это обойти и вызвать кнопкой что-нибудь?

Добавлено через 23 часа 6 минут
Всё, проблема решена. Забил на кнопки, отрисовав их на форме вручную и обрабатывая нажатия мыши. Но всё равно интересно, как же надо было сделать "правильно".
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.10.2011, 08:54
Ответы с готовыми решениями:

Динамическое добавление кнопок
Доброе время суток! У меня такой вопрос: Как это реализовать. При загрузке формы в каталоге img мы смотрим сколько картинок, затем...

Динамическое создание кнопок и добавление функционала
Здравствуйте. Предыстория: пишу дипломпо автоматизации небольших заведений, кафе и т.п(терминал для создания, хранения заказов)....

Динамическое создание кнопок
Кнопка start создает 5 label и button. Подскажите пожалуйста, как сделать так, чтобы при нажатии bt удалялись bt и lb. ...

3
Заблокирован
11.10.2011, 09:09
Память выделяли под массив кнопок?
C#
1
Button []buttons = new Button[20];
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
11.10.2011, 09:27
Ответы на 7 самых частых вопросов по WinForms
0
2 / 2 / 0
Регистрация: 10.10.2011
Сообщений: 4
11.10.2011, 09:59  [ТС]
Цитата Сообщение от Dzhej-Dzhej Посмотреть сообщение
Память выделяли под массив кнопок?
Да.

Впрочем, до меня наконец-то дошло, в чём косяк. В том, что я добавлял клик к кнопке в функции своего класса, вне формы. Вот так всё нормально работает:
C#
1
2
3
4
5
6
7
private void Form1_Load(object sender, EventArgs e)
{
    MyContentBrowser.ReloadButtons(this.Controls, this.Width);
    foreach (Control c in this.Controls)
        if (c.Name.Contains(ContentBrowser.ButtonPrefix))
            c.Click += new System.EventHandler(MyButtonClick);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.10.2011, 09:59
Помогаю со студенческими работами здесь

Динамическое создание кнопок
TextBox tbI = new TextBox; Button btU = new Button; Int n=5; for (int i = 0; i &lt; n; i++) { //создание textBox ...

Динамическое создание кнопок
Вот текст задачи Написать программу, добавляющую на форму кнопки. Кнопки добавляются в узлы прямоугольной сетки. Расстояния между...

Динамическое создание кнопок
Всем доброго времени суток! Передо мною стала серьезная проблема! Имеется файл &quot;test.txt&quot;, его содержимое: кнопка1 ...

Динамическое создание круглых кнопок
Подскажите, пожалуйста, как динамически создать четыре круглые кнопки, чтобы (они находятся по углам) при нажатии на одну из них выводилась...

Динамическое создание 5ти кнопок
Всем доброго времени суток! Передо мною стоит такая задача: В папке d:test есть 5 папок (папка1, папка2, папка3, ... папка5). ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru