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

Как обратиться к определенному элементу в Imagelist?

02.05.2023, 08:22. Показов 643. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как можно обратиться к определенному элементу в Imagelist, когда их несколько? Что бы при нажатии высвечивалось сообщение massagebox?
Просто я создаю игру, гле из 5 карт надо найти 1 королеву. Я разместила на форме 5 PictureBox, и что бы карты не повторялись, я сделала для каждого PictureBox свой imagelist. Мне надо, что бы при нажатии на королеву, высвечивалось сообщение, вот только как это сделать, я не понимаю, много чего перепробовала, но не доходит..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.05.2023, 08:22
Ответы с готовыми решениями:

Обратиться к определённому элементу массива в foreach
foreach (string i in Console.ReadLine().Trim(' ').Split(' ')) Console.Write("{0}", String.IsNullOrEmpty(i) ? i : " " + i); как...

Как обратиться к определенному объекту из класса?
Есть класс, который использует параметры базового класса и имеет 1 собственный. Как обратиться к определенному параметру этого класса и...

Как в char обратиться к определенному символу?
Как в char обратиться к определенному символу, без множин.

12
sleep
 Аватар для I can
4916 / 4567 / 838
Регистрация: 13.04.2015
Сообщений: 9,698
02.05.2023, 08:28
Цитата Сообщение от 342512 Посмотреть сообщение
королеву
По-русски она называется "дама".

Добавлено через 2 минуты
Цитата Сообщение от 342512 Посмотреть сообщение
для каждого PictureBox свой imagelist
При присваивании картинки PictureBox-у, также присвойте свойству Tag определённое значение, а при клике выводите его.
0
0 / 0 / 0
Регистрация: 01.05.2023
Сообщений: 18
02.05.2023, 08:44  [ТС]
Каждому PictureBox уже был присвоен tag от 0 до 4, но как реализовать так, что бы, когда кликаешьтолько на картинку дамыдамы, высвечивалось сообщение massagebox, когда в ImageList они находятся под разными номерами?

Добавлено через 5 минут
Вот исходный код, в конце программы то,что мне нужно

Добавлено через 1 минуту
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
namespace Угадай_карту___
{
    public partial class Form3 : Form
    {
        int[] kart;
        private int i;
        public int c;
        int[] opened;
        private int opened_counter;
        private Form4 f4;
       
 
        public Form3()
        {
            opened_counter = 0;
            InitializeComponent();
            kart = new int[5];
            c = 0;
            
        }
        private void hide()
        {
           
            
                pictureBox1.BackgroundImage = imageList6.Images[kart[0]];
                pictureBox2.BackgroundImage = imageList6.Images[kart[0]];
                pictureBox3.BackgroundImage = imageList6.Images[kart[0]];
                pictureBox4.BackgroundImage = imageList6.Images[kart[0]];
                pictureBox5.BackgroundImage = imageList6.Images[kart[0]];
            
 
        }
 
        private void Form3_Load(object sender, EventArgs e)
        {
            hide();
 
            pictureBox1.BackgroundImage = imageList6.Images[kart[0]];
            pictureBox2.BackgroundImage = imageList6.Images[kart[0]];
            pictureBox3.BackgroundImage = imageList6.Images[kart[0]];
            pictureBox4.BackgroundImage = imageList6.Images[kart[0]];
            pictureBox5.BackgroundImage = imageList6.Images[kart[0]];
            //зановоToolStripMenuItem_Click(null, null);
        }
 
        private void зановоToolStripMenuItem_Click(object sender, EventArgs e)
        {
            
            
            Random R;
            R = new Random();
            for (int i = 0; i < 5; i++) 
            {
                
                kart[i] = R.Next(5);
                {
                    pictureBox1.Image = imageList1.Images[kart[0]];
                    pictureBox1.Image = imageList1.Images[kart[1]];
                    pictureBox1.Image = imageList1.Images[kart[2]];
                    pictureBox1.Image = imageList1.Images[kart[3]];
                    pictureBox1.Image = imageList1.Images[kart[4]];
                
               
                
                    pictureBox2.Image = imageList2.Images[kart[0]];
                    pictureBox2.Image = imageList2.Images[kart[1]];
                    pictureBox2.Image = imageList2.Images[kart[2]];
                    pictureBox2.Image = imageList2.Images[kart[3]];
                    pictureBox2.Image = imageList2.Images[kart[4]];
 
 
                    pictureBox3.Image = imageList3.Images[kart[0]];
                    pictureBox3.Image = imageList3.Images[kart[1]];
                    pictureBox3.Image = imageList3.Images[kart[2]];
                    pictureBox3.Image = imageList3.Images[kart[3]];
                    pictureBox3.Image = imageList3.Images[kart[4]];
 
                    pictureBox4.Image = imageList4.Images[kart[0]];
                    pictureBox4.Image = imageList4.Images[kart[1]];
                    pictureBox4.Image = imageList4.Images[kart[2]];
                    pictureBox4.Image = imageList4.Images[kart[3]];
                    pictureBox4.Image = imageList4.Images[kart[4]];
 
                    pictureBox5.Image = imageList5.Images[kart[0]];
                    pictureBox5.Image = imageList5.Images[kart[1]];
                    pictureBox5.Image = imageList5.Images[kart[2]];
                    pictureBox5.Image = imageList5.Images[kart[3]];
                    pictureBox5.Image = imageList5.Images[kart[4]];
 
 
                }
               
                
            }
           
        }
        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBoxButtons msd = MessageBoxButtons.YesNo;
            string massage = "Вы действительно хотите выйти?";
            string caption = "Выход";
            if (MessageBox.Show(massage, caption, msd) == DialogResult.Yes)
                this.Close();
        }
 
        private int[] Opened()
        {
            return opened;
        }
 
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            
            PictureBox p = (PictureBox)sender;
            int index = Convert.ToInt32(p.Tag);
            if (opened_counter == 1)
            {
                hide();
                opened_counter = 0;
            }
 
            opened[opened_counter] = index;
            opened_counter++;
            p.BackgroundImage = imageList1.Images[index];
            p.BackgroundImage = imageList2.Images[index];
            p.BackgroundImage = imageList3.Images[index];
            p.BackgroundImage = imageList4.Images[index];
            p.BackgroundImage = imageList5.Images[index];
            c++;
            label1.Text = $" {c}";
 
             if( index == kart[3])
 
            {
               
                MessageBox.Show("не Шерлок ли вы?");
            }
            
 
        }
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,726
Записей в блоге: 1
02.05.2023, 08:56
C#
1
2
3
4
5
6
7
8
9
for (int i = 0; i < 5; i++)
{
kart[i] = R.Next(5);
pictureBox1.Image = imageList1.Images[kart[0]];
pictureBox1.Image = imageList1.Images[kart[1]];
pictureBox1.Image = imageList1.Images[kart[2]];
pictureBox1.Image = imageList1.Images[kart[3]];
pictureBox1.Image = imageList1.Images[kart[4]];
и далее ...
Вот это чё такое???
0
sleep
 Аватар для I can
4916 / 4567 / 838
Регистрация: 13.04.2015
Сообщений: 9,698
02.05.2023, 08:59
Цитата Сообщение от 342512 Посмотреть сообщение
C#
1
2
3
4
5
pictureBox1.Image = imageList1.Images[kart[0]];
pictureBox1.Image = imageList1.Images[kart[1]];
pictureBox1.Image = imageList1.Images[kart[2]];
pictureBox1.Image = imageList1.Images[kart[3]];
pictureBox1.Image = imageList1.Images[kart[4]];
Зачем это так?
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,726
Записей в блоге: 1
02.05.2023, 09:10
342512, все картинки карт следует хранить в одном ImageList. Нужно создать список загаданных карт и привязать его к разным PictureBox, например помещать номер в свойство Tag. Ну, а далее всё просто, если кликнули по картинке, где загаданное значение совпало с неким "правильным", то получите поздравления.
0
0 / 0 / 0
Регистрация: 01.05.2023
Сообщений: 18
02.05.2023, 09:27  [ТС]
Окей, сейчас попробую, спасибо большое

Добавлено через 10 минут
А как сделать так, что бы картинки в ImageList не повторялись?
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,726
Записей в блоге: 1
02.05.2023, 09:29
Цитата Сообщение от 342512 Посмотреть сообщение
А как сделать так, что бы картинки в ImageList не повторялись?
Поместить в лист разные картинки - очевидно же! Или вопрос в чём-то ином?
0
0 / 0 / 0
Регистрация: 01.05.2023
Сообщений: 18
02.05.2023, 09:39  [ТС]
Просто у меня рандом но расставляются картинки и при нажатии кнопки "заново" дамы может и не быть среди 5-ти карт, или быть, но несколько (две, три)
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,726
Записей в блоге: 1
02.05.2023, 10:03
342512, вместо простого массива используйте HashSet, но перед его наполнением случайными числами помещайте в него обязательный номер "дамы".
0
0 / 0 / 0
Регистрация: 01.05.2023
Сообщений: 18
02.05.2023, 10:11  [ТС]
А как примерно оно будет выглядеть в коде?
0
2282 / 1598 / 400
Регистрация: 26.06.2017
Сообщений: 4,726
Записей в блоге: 1
02.05.2023, 10:27
C#
1
2
3
4
5
6
7
8
9
10
HashSet<int> kartNumbers = new HashSet<int>();
// наполняем значениями
kartNumbers.Add(11) // здесь 11 это номер соответствующий Даме
int i = 0;
Random R = new Random();
while (i < 4) 
{
   if (kartNumbers.Add(R.Next(54))
      i++;
}
0
0 / 0 / 0
Регистрация: 01.05.2023
Сообщений: 18
02.05.2023, 11:00  [ТС]
Спасибо большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.05.2023, 11:00
Помогаю со студенческими работами здесь

Как мне обратиться к определенному узлу TreeView
Как мне обратьтися к определенному узлу.

Как прокрутить содержимое к определенному элементу?
Всем привет! Подскажите пожалуйста, как сделать такое. У нас есть некий блок. Внутри блока ссылки, которых может быть много. У блока...

Как обратиться к определённому виджету класса созданного циклом?
Доброго времени суток форумчане!!! Изучая Tkinter наткнулся на следующую проблему: Необходимо извлечь данные переменных IntVar()...

WPF DataGrid как перейти к определенному элементу по ID
Есть DataGrid, таблица из 100 строк, как осуществить переход к определенной строке. передав ей фокус?? пробовал SelectedIndex и...

Как присвоить class определенному элементу списка?
Доброе время суток! Помогите пожалуйста решить задачу. Есть простой список из n-го количества элементов &lt;ul&gt; ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru