Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 21.02.2015
Сообщений: 31

Динамическое создание кнопок в Grid - C# WPF

30.09.2016, 13:13. Показов 3071. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу создать массив из кнопок размером NxN.
Вот что я пишу:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<Window x:Class="DigDez2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="640" Width="840"
        TextOptions.TextFormattingMode="Display">
    <Grid>
        <ScrollViewer Margin="92,0,0,0">
            <WrapPanel Name="wrapPanel" Background="#FFF2F2F2" />
        </ScrollViewer>
        <Button Content="Start" Height="23" HorizontalAlignment="Left" Margin="11,41,0,0" Name="createButton" VerticalAlignment="Top" Width="75" Click="СreateButton_Click" />
        <ComboBox Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="comboBox1" VerticalAlignment="Top" Width="74" SelectedIndex="0">
            <ComboBoxItem Content="2" />
            <ComboBoxItem Content="3" />
            <ComboBoxItem Content="4" />
            <ComboBoxItem Content="5" />
            <ComboBoxItem Content="6" />
            <ComboBoxItem Content="7" />
            <ComboBoxItem Content="8" />
            <ComboBoxItem Content="9" />
            <ComboBoxItem Content="10" />
        </ComboBox>
    </Grid>
</Window>
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
46
47
48
public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        private Button[,] CreateButtons(int quantity, int startNumber)
        {
            Button[,] buttons = new Button[quantity, quantity];
            for (int i = 0; i < buttons.Length; i++)
            {
                for (int j = 0; j < buttons.Length; j++)
                {
                    buttons[i, j] = new Button();
                    buttons[i, j].Width = 40d;
                    buttons[i, j].Margin = new Thickness(1d);
                    buttons[i, j].Content = (i + startNumber).ToString();
                }
            }
            return buttons;
        }
 
        private void AddToWrapPanel(Button[,] buttons)
        {
            for (int i = 0; i < buttons.Length; i++)
                for (int j = 0; j < buttons.Length; j++)
                {
                    wrapPanel.Children.Add(buttons[i, j]);
                }
        }
 
        private int GetQuantityButtons()
        {
            ComboBoxItem item = (ComboBoxItem)comboBox1.SelectedItem;
            int count = int.Parse((string)item.Content);
            return count;
        }
 
        private void СreateButton_Click(object sender, RoutedEventArgs e)
        {
            if (wrapPanel.Children.Count > 0)
                wrapPanel.Children.Clear();
            int count = GetQuantityButtons();
            Button[,] buttons = CreateButtons(count, 1);
            AddToWrapPanel(buttons);
        }
    }
Но ругается при попытке с генерировать кнопки на эту строчку:
C#
1
                    buttons[i, j] = new Button();
Вот так:
Индекс находился вне границ массива.

В чем причина и как это исправить, подскажите, пожалуйста?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.09.2016, 13:13
Ответы с готовыми решениями:

Динамическое создание кнопок в Grid
Всем приветик. Есть такой вопросик. Есть 2 Gridа. На Grid1 располагается Combobox и Button. Выбираем числовое значение в Combobox и...

Динамическое создание элементов Grid и DataGrid
Всем доброго вечера. Требуется помощь. Никак не получается сделать. Задача следующая. Есть набор данных следующего вида: ...

Динамическое создание и помещение Grid в rowDefinition
Динамически создаю rowDefinition в Grid, туда в rowDefinition добавляю динамически созданный Grid, и закрашиваю его. И это все по нажатию...

4
Заблокирован
30.09.2016, 13:43
Slavap08, используйте ItemsControl + UniformGrid в качестве панели.
1
0 / 0 / 1
Регистрация: 21.02.2015
Сообщений: 31
30.09.2016, 13:55  [ТС]
Ev_Hyper, Я только начал изучать WPF, не могли бы Вы, пожалуйста, привести пример, как именно их использовать?
0
Заблокирован
30.09.2016, 14:16
Цитата Сообщение от Slavap08 Посмотреть сообщение
Ev_Hyper, Я только начал изучать WPF, не могли бы Вы, пожалуйста, привести пример, как именно их использовать?
Slavap08, вы напишите, что хотите реализовать, тогда смогу написать пример.
0
0 / 0 / 1
Регистрация: 21.02.2015
Сообщений: 31
30.09.2016, 14:21  [ТС]
Ev_Hyper, Мне необходимо на форме создать поворачиваемые рукоятки (кликом мышки меняется положение рукоятки с вертикального в горизонтальный и обратно).
Рукоятки расположены квадратом, как 2-мерный массив NxN.
Число N должно быть настраиваемое.
Я решил создать массив из поворачиваемых кнопок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.09.2016, 14:21
Помогаю со студенческими работами здесь

Сделать динамическое создание Grid и Label внутри него
Здравствуйте, необходимо сделать динамическое создание Grid и Label внутри него. Ниже код, работает за исключением того, что все Label...

Создание большого количества кнопок в WPF
Доброго времени суток ! Волею судеб вышло,что мне пришлось столкнуться c WPF на С#. Не могу придумать как задать 100 кнопок на...

Динамическое создание формы WPF
Интересует как динамически создать форму и отобразить ее поверх существующей в WPF? Можно так: System.Windows.Forms.Form frm = new...

Динамическое создание элементов
Здравствуйте. Пишу приложение wpf с паттерном mvvm. Нужно динамически создавать элементы по нажатию кнопки. Нашёл вот такой пример, но тут...

Динамическое создание элементов wpf mvvm
Как динамически создать например кнопку и засунуть её в grid через клас viewmodel


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки 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. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru