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

Динамично создать 4 панели и к каждой панели привязать динамично таблицу

21.02.2012, 10:25. Показов 2108. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
private void Form1_Load(object sender, EventArgs e) 
{
 
   int Index_I, Border=10; 
 
   DataGrid[] ListProducts = new DataGrid[4]; 
 
   Panel[] SnookerTable = new Panel[4]; 
 
     for (Index_I = 0; Index_I < 3; Index_I++) 
      {
 
        SnookerTable[Index_I] = new Panel(); 
        Controls.Add(SnookerTable[Index_I]); 
 
 
           if (Index_I == 0 || ((Index_I) % 4 == 1 && Index_I >= 3)) 
              SnookerTable[Index_I].Location = new Point(Border, Border); 
 
           else if (Index_I == 1 || ((Index_I + 1) % 4 == 2 && Index_I >= 3)) 
              SnookerTable[Index_I].Location = new Point(Width / 2, Border); 
 
           else if (Index_I == 2 || ((Index_I + 1) % 4 == 3 && Index_I >= 3)) 
              SnookerTable[Index_I].Location = new Point(Border, Height / 2 - Border); 
 
           else if (Index_I == 3 || ((Index_I + 1) % 4 == 0 && Index_I >= 3)) 
              SnookerTable[Index_I].Location = new Point(idth/2, Height/2-Border); 
            ListProducts[Index_I] = new DataGrid(); 
            SnookerTable[Index_I].BorderStyle = BorderStyle.Fixed3D; 
            ListProducts[Index_I].BorderStyle = BorderStyle.Fixed3D; 
            SnookerTable[Index_I].Size = new Size(Width/2-(Border*2), Height/2-(Border*3)); 
            ListProducts[Index_I].Size = new Size(SnookerTable[Index_I].Width - 110, SnookerTable[Index_I].Height - Border * 5); 
            ListProducts[Index_I].Location = new Point(SnookerTable[Index_I].Left - Border / 2, SnookerTable[Index_I].Top + Border * 3); 
            SnookerTable[Index_I].Controls.Add(ListProducts[Index_I]);
 
       } 
 
}
Имеется такой фрагмент кода, который кладется в загрузку главной формы. Смысл кода
Динамично создать 4 элемента Панели и к каждой панели привязать динамично таблицу
Вроде все работает за исключением того что рисуется только первая таблица а все последующие
как будто их нет, хотя в дебаге проверяю все значения присваиваются так как надо
Однако попробовал убрать следующую строчку кода:
C#
1
ListProducts[Index_I].Location = new Point(SnookerTable[Index_I].Left - Border / 2, SnookerTable[Index_I].Top + Border * 3);
вроде после убирания этой строчки начинает чертить все таблицы но по краю панели имеется ввиду
то что край таблицы визуально находится на краю панели то есть
C#
1
Panel(left,Top)=DataGrid(left, top)
а мне надо разместить DataGrid приблизом в середине Panel
Вобщем помогите кто если чем может сижу мучаюсь 3-ий день
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.02.2012, 10:25
Ответы с готовыми решениями:

как создать всплывающее меню, которое заполняется динамично
подскажите как создать всплывающее меню, которое заполняется динамично (т.е. пункт меню при каждом вызове формируются по новому)

Динамично перерисовывать круг
$(document).ready(function() { var canvas = document.getElementById(&quot;myCanvas&quot;); var container =...

Прогресбар с динамично изменяющимся максимумом
Здравствуйте, подскажите пожалуйста как мне реализовать такой момент: Мой прогресбар показывает сколько всего файлов обработалось из...

7
c#
 Аватар для temich-92
95 / 95 / 27
Регистрация: 25.03.2011
Сообщений: 290
21.02.2012, 15:32
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 Form1 : Form
    {
        List<_Panel> _panels;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            _panels = new List<_Panel>();
            int x = 5, y = 5;
 
            for (int i = 0; i < 4; i++)
            {
                _Panel _pn = new _Panel(new Point(x, y), new Size(100, 200));
                _panels.Add(_pn);
                Controls.Add(_pn.panel);
 
                x += 105;
            }
        }
    }
 
    public class _Panel
    {
        public Panel panel;
        public DataGrid dataGrid;
 
        public _Panel(Point location, Size size)
        {
            panel = new Panel()
            {
                Location = location,
                Size = size,
                BorderStyle = BorderStyle.Fixed3D
            };
 
            dataGrid = new DataGrid()
            {
                Location = new Point(5, 5),
                Size = new Size(size.Width - 10, size.Height - 10),
                BorderStyle = BorderStyle.Fixed3D
            };
            panel.Controls.Add(dataGrid);
        }
    }
0
0 / 0 / 0
Регистрация: 21.02.2012
Сообщений: 4
21.02.2012, 16:00  [ТС]
неа сорри не то попробуй возьми мой код и вставь в проект у себя на компе и посмотри
0
c#
 Аватар для temich-92
95 / 95 / 27
Регистрация: 25.03.2011
Сообщений: 290
21.02.2012, 17:54
а чем мой вариант не устраивает? короче и удобней на мой взгляд..
0
0 / 0 / 0
Регистрация: 21.02.2012
Сообщений: 4
21.02.2012, 18:01  [ТС]
просто насколько я понял твой код это для одного контрола а мне надо 2 массива контролов
причем не рисуется именно со второго элемента массива но стоит мне убрать строчку кода где начинается рисовка таблицы как начинает все рисоваться
короче может я объясняю плохо просто возьми код открой новый проект в студии и прилепи код в FormLoad и просто взгляни почему если не затруднит конечно мне кажется что это глюки системы потому как какая то нестыковка в массиве первый элемент рисуется а начиная со второго и далее нифига
вобщем если не затруднит скопируй код в новый проект и посмотри почему
0
c#
 Аватар для temich-92
95 / 95 / 27
Регистрация: 25.03.2011
Сообщений: 290
21.02.2012, 20:06
Цитата Сообщение от Johnik1976 Посмотреть сообщение
просто насколько я понял твой код это для одного контрола а мне надо 2 массива контролов
каких контролов?? исправь под много)
C#
1
2
3
4
5
6
7
8
9
10
11
if (Index_I == 0 || ((Index_I) % 4 == 1 && Index_I >= 3)) 
              SnookerTable[Index_I].Location = new Point(Border, Border); 
 
           else if (Index_I == 1 || ((Index_I + 1) % 4 == 2 && Index_I >= 3)) 
              SnookerTable[Index_I].Location = new Point(Width / 2, Border); 
 
           else if (Index_I == 2 || ((Index_I + 1) % 4 == 3 && Index_I >= 3)) 
              SnookerTable[Index_I].Location = new Point(Border, Height / 2 - Border); 
 
           else if (Index_I == 3 || ((Index_I + 1) % 4 == 0 && Index_I >= 3)) 
              SnookerTable[Index_I].Location = new Point(idth/2, Height/2-Border);
это чтобы рисовались по 2 в строке??))
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for (int i = 0; i < 4; i++)
            {
                _Panel _pn = new _Panel(new Point(x, y), new Size(100, 200));
                _panels.Add(_pn);
                Controls.Add(_pn.panel);
 
                panelsInRow++;
 
                x += _pn.panel.Width + 5;
 
                if (panelsInRow == 2)
                {
                    x = 5;
                    y += _pn.panel.Height + 5;
                    panelsInRow = 0;
                }
            }
вот к моему коду по 2 в строке)
ту строку что коментиш исправь
C#
1
ListProducts[Index_I].Location = new Point( Border / 2, Border * 3);
C#
1
SnookerTable[Index_I].Left - Border / 2
вот этим ты из координаты Х панели на форме вычитаешь Border / 2

Добавлено через 3 минуты
Цитата Сообщение от Johnik1976 Посмотреть сообщение
это глюки системы потому как какая то нестыковка в массиве первый элемент рисуется а начиная со второго и далее нифига
он рисуется ниже чем нужно..мы его не видим

Добавлено через 49 минут
Цитата Сообщение от Johnik1976 Посмотреть сообщение
DataGrid[] ListProducts = new DataGrid[4];
Panel[] SnookerTable = new Panel[4];
2 совершенно бесполезных действия по моему..ты потом не сможешь до этих массивов достучаться..это надо было делать вне метода
C#
1
2
3
4
5
6
7
DataGrid[] ListProducts = new DataGrid[4]; 
Panel[] SnookerTable = new Panel[4];
 
private void Form1_Load(object sender, EventArgs e) 
{
     .......
}
Добавлено через 59 минут
это кстати
практически то же самое, что и у тебя
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
49
50
51
52
53
54
55
56
57
58
59
public partial class Form1 : Form
    {
        List<_Panel> _panels;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            _panels = new List<_Panel>();
            int x = 5, y = 5;
            int panelsInRow = 0;
 
            for (int i = 0; i < 4; i++)
            {
                _Panel _pn = new _Panel(new Point(x, y), new Size(100, 200));
                _panels.Add(_pn);
                Controls.Add(_pn.panel);
 
                panelsInRow++;
 
                x += _pn.panel.Width + 5;
 
                if (panelsInRow == 2)
                {
                    x = 5;
                    y += _pn.panel.Height + 5;
                    panelsInRow = 0;
                }
            }
        }
    }
 
    public class _Panel
    {
        public Panel panel;
        public DataGrid dataGrid;
 
        public _Panel(Point location, Size size)
        {
            panel = new Panel()
            {
                Location = location,
                Size = size,
                BorderStyle = BorderStyle.Fixed3D
            };
 
            dataGrid = new DataGrid()
            {
                Location = new Point(5, 5),
                Size = new Size(size.Width - 10, size.Height - 10),
                BorderStyle = BorderStyle.Fixed3D
            };
 
            panel.Controls.Add(dataGrid);
        }
    }
0
0 / 0 / 0
Регистрация: 21.02.2012
Сообщений: 4
22.02.2012, 00:53  [ТС]
Ya tak ponyal shto mne nado stavit emu koordinati kak ya stavlu otnositelno glavnoy formi
A TAK KAk tablica privyazana k paneli to ona avtomatom beryet eti koordinati ot verhnego ugla paneli tak???
kstati day mne svoy mail
0
c#
 Аватар для temich-92
95 / 95 / 27
Регистрация: 25.03.2011
Сообщений: 290
22.02.2012, 09:46
Цитата Сообщение от Johnik1976 Посмотреть сообщение
ona avtomatom beryet eti koordinati ot verhnego ugla paneli tak???
так
Цитата Сообщение от Johnik1976 Посмотреть сообщение
day mne svoy mail
в профиле
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.02.2012, 09:46
Помогаю со студенческими работами здесь

Динамично добавить SubItem в ContextMenuStrip
У меня есть contextMenuStrip и нужно добавить подItem'ы в пункт &quot;Коллекции&quot;. То есть в итоге (после того как я их добавлю) в открытом...

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

Динамично созданное меню не убирается
Вот код: function mouse_over_prov(event) { event=event||window.event forum_menu=document.getElementsByClassName(&quot;hidden_forum&quot;) ...

Как сделать динамично изменяемый график?
Добрый день! Подскажие пожалуйста, вопрос следующий... Хочу сделать так, чтобы на основе введенных в формы данных - рисовался...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru