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

Выбор двух 'Panel' для обработки действия

23.01.2022, 14:01. Показов 1441. Ответов 7
Метки c# (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день столкнулся с проблемой, разработка пасьянс(пирамида), нужно выбрать два элемента Panel для обработки действия( то есть клик по одному затем клик по второму и после этого обработка действия) . Обрыскал интернет но ответа так и не нашел, надеюсь на помощь, спасибо.
Ссылка на архив с проектом:


Архив с исходниками: WindowsFormsApp1-Shah69.7z
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.01.2022, 14:01
Ответы с готовыми решениями:

Выбор действия из нескольких вариантов нажатием двух кнопок, case of
Есть несколько действий. Необходимо написать выбор действия посредством нажатия кнопки TButton1 и TButton2 (или TButton3) используя case of...

Реализовать массив обьектов для хранения и действия для обработки элементов массива.
Реализовать массив обьектов для хранения и действия для обработки элементов массива. Результаты сессии.Подсчет среднего балла по группе...

Арифметические действия над числами. Выбор номера действия. Перевод с Pascal
Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Дан номер...

7
23.01.2022, 14:40

Не по теме:

Здравствуйте. Это WinForms?

0
0 / 0 / 0
Регистрация: 24.10.2016
Сообщений: 36
23.01.2022, 14:41  [ТС]
Добрый , да
0
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
23.01.2022, 14:45
Пожалуйста, в следующий раз указывайте соответуствующий раздел темы. В данном случае WinForms

Не указывайте ссылки на посторонние файлообменники. Для этого есть "скрепка" над полем ввода.
1
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
23.01.2022, 15:05
Лучший ответ Сообщение было отмечено Shah69 как решение

Решение

Shah69, Тут нужно создать один обработчик для всех панелей, после, проверяем какая карта(Panel) выбрана.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool flagFirst = true;
        Panel pnlFirst;
        private void ActionPanel_Click(object sender, EventArgs e)
        {
            Panel pnlLast = sender as Panel;
            if (flagFirst)
            {
                flagFirst = false;
                pnlFirst = pnlLast;
            }
            else
            {
                flagFirst = true;
                if(pnlFirst.Tag == pnlLast.Tag)
                {
                    //Тут уже перемещаем или еще что -то.......
                }
            }
 
        }
Как-то так. Это чисто на вскидку.
1
0 / 0 / 0
Регистрация: 24.10.2016
Сообщений: 36
23.01.2022, 15:34  [ТС]
Не совсем то, но все равно спасибо
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
23.01.2022, 16:02
Цитата Сообщение от Shah69 Посмотреть сообщение
Не совсем то, но все равно спасибо
Тут зависит о того что именно вы хотели от этих кликов. Если для сверке одной и другой карты на их равенство, то данный подход вам подходит. Но здесь нужно учесть одно, что в каждой панели в свойстве Tag должно быть значение самой карты или же модель карты, по которой должно происходить сравнение. Я думаю не логично будет содержать на каждую панель свой обработчик. Вопрос, если даже и создать для всех обработчик, как потом их ловить и сравнивать с другими картами? Диапазон выбора очень большой будет.
Я вам и показал один обработчик, который можно будет примененить ко всем панелям и уже явно иметь ссылку на выбранную, 1 - вую панель и 2 -ю.
1
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
23.01.2022, 16:07
Лучший ответ Сообщение было отмечено Shah69 как решение

Решение

Если очередность событий не важна, то можно попробовать такой класс:
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
/// <summary>
/// Аккумулятор событий
/// </summary>
internal class EventAccumulator
    {
        /// <summary>
        /// Событие при накоплении заданного количества событий
        /// </summary>
        public event EventHandler<EventArgs> Accumulated;
        /// <summary>
        /// Ёмкость аккумулятора
        /// </summary>
        public int Capacity { get; private set; }
        private int _accum;
 
        public EventAccumulator(int capacity)
        {
            Capacity = capacity;
            _accum = 0;
        }
        /// <summary>
        /// Аккумулировать следующее событие
        /// </summary>
        public void Next()
        {
            if (++_accum == Capacity)
            {
                OnAccumulated();
                _accum = 0;
            }
        }
 
        protected virtual void OnAccumulated()
        {
            Accumulated?.Invoke(this, EventArgs.Empty);
        }
    }
При создании класса задаём количество событий, которые нужно накопить. Вызываем методом Next. При достижении заданного количества, вызовется событие Accumulated, в котором можно писать уже свой обработчик.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.01.2022, 16:07
Помогаю со студенческими работами здесь

Выбор файла для обработки
Есть простенький код для анализа инфы из файла, хочу создать для него GUI, но никогда с ним не работал. Подскажите пожалуйста как сделать...

Выбор файла для обработки
Есть простенький код для анализа инфы из файла, хочу создать для него GUI, но никогда с ним не работал. Подскажите пожалуйста как сделать...

Выбор ноутбука для обработки фото!
Всем привет. Встал вопрос после пользования моего старичка на i5-3220M. Уж больно подвисать все начинает, ищу на замену для обработки фото...

Выбор комплектующих для нового системника (для обработки видео работы в офисных приложениях и игушек немного)
Проц intel core i5 2400 3.1ГГц &lt; Socket 1155 6M/2500MHz&gt; М.плата S-1155 GigaByte GA-P61-USB3-B3 &lt;H61/DDR3/SATA/Sb/gLan/ATX&gt; Вентилятор...

Выбор приложений .NET Core для конкретного действия
Хочу арендовать VPS на линуксе. И для него хочу написать программу (или не одну, не знаю). Я буду с телефона по апи выполнять запрос и в...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru