Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
1 / 1 / 1
Регистрация: 28.07.2012
Сообщений: 80

.Net 3.5 картинки на кнопках в двух формах

29.06.2013, 13:09. Показов 2972. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется одно приложение. Две формы. План таков: имеется кнопка, кликнув на которую, вызывается второе окно, в котором я выбираю нужное мне изображение. После клика, картинка из второй формы(окна) должна перейти на кнопку в первой форме(окне) и остаться там жить, второе окошко закрывается после чего. Подскажите как реализовать голову сломал, видимо недостаточно.
P.S. кто может подсказать как сделать проверку какая картинка на кнопке для выполнения дальнейших условий.
P.P.S. Если можно сделать с Picture Box подобную хрень и не парить яйца, то буду признателен за помощь такого плана.
Спасибо за помощь
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.06.2013, 13:09
Ответы с готовыми решениями:

Картинки на кнопках
Здравствуйте, ребята. Прошу помощи. Я в Delphi слаб, начинающий и только. Поэтому обратиться хочу к вам с некоторыми вопросами. Можно...

Картинки на кнопках
В Alpha Controls есть компонент sBitBtn. Нужно сделать,чтобы картинка 1 стояла когда кнопка не активна, картинка 2-когда наводим мышью,...

Криво стоят картинки на кнопках
Есть сайт http://fotoshkolaok.ru/ слева вверху там есть кнопка:"быстрые кнопки"(там человечки на картинке:) ) Нажав ее мы увидим...

34
1 / 1 / 1
Регистрация: 28.07.2012
Сообщений: 80
05.07.2013, 03:29  [ТС]
Студворк — интернет-сервис помощи студентам
То ли лыжи не едут, то ли я е....
Form1
C#
1
2
3
4
5
6
7
 private void pictureBox2_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.Show();
            pictureBox2.Image = Data.Image; //вот здесь косяк, не знаю что делать, чтобы он картинку не сразу грузил, условия на проверку null делал, но как-то не спасло, ведь там был goto, а это не очень изящное решение
            
        }
Вот что в Form2
C#
1
2
3
4
5
6
 private void pictureBox2_Click(object sender, EventArgs e)
        {
            
            Data.Image = new Bitmap(pictureBox2.Image); //большего вроде бы и не надо
            
        }
Думаю проблему обозначил.
0
 Аватар для mrReptiloid
313 / 176 / 25
Регистрация: 30.04.2011
Сообщений: 1,469
05.07.2013, 03:49
чтобы он картинку не сразу грузил
всмысле не сразу?а как?
0
1 / 1 / 1
Регистрация: 28.07.2012
Сообщений: 80
05.07.2013, 03:57  [ТС]
Цитата Сообщение от sniper_lunev Посмотреть сообщение
всмысле не сразу?а как?
В общем если я нажму пб в первой форме, то получается что он и открывает вторую форму и не дожидаясь клика по пб во второй форме меняет на картинку из класса, но там пусто..
0
 Аватар для mrReptiloid
313 / 176 / 25
Регистрация: 30.04.2011
Сообщений: 1,469
05.07.2013, 04:01
Используйте вместо Show метод ShowDialog(),он блокирует основной поток до закрытия этого самого диалога.
1
1 / 1 / 1
Регистрация: 28.07.2012
Сообщений: 80
05.07.2013, 04:07  [ТС]
Да. Так теперь пустоту не выдает, но и картинку выводить не хочет.)

Добавлено через 3 минуты
ВСЁ, получилось!) ура ура ура))) Еще не большой вопрос, можно ли найти имя картинки с помощью кода? Тоесть есть PictureBox.Image и через него name можно узнать? id картинки скажем так нужно припилить)
1
 Аватар для mrReptiloid
313 / 176 / 25
Регистрация: 30.04.2011
Сообщений: 1,469
05.07.2013, 04:12
Voshre, насколько я знаю-нет.но можете при загрузке картинки в пб в pictureBox1.Image.Tag записывать ее имя,или то,что Вам нужно..это как-бы дополнительнре полтзовательское свойтсво
0
1 / 1 / 1
Регистрация: 28.07.2012
Сообщений: 80
05.07.2013, 04:19  [ТС]
Цитата Сообщение от sniper_lunev Посмотреть сообщение
Voshre, насколько я знаю-нет.но можете при загрузке картинки в пб в pictureBox1.Image.Tag записывать ее имя,или то,что Вам нужно..это как-бы дополнительнре полтзовательское свойтсво
Ага, спасибо огромное. Вот теперь буду думать как реализовать общение форм по другим ПБ, ведь этот код подходит только к одному пб, надо еще 8 штук сделать, так же инициализацию прописывать 8 раз?? для разных пб или for попробовать(вроде пробовал, но там не получилось)?
0
 Аватар для mrReptiloid
313 / 176 / 25
Регистрация: 30.04.2011
Сообщений: 1,469
05.07.2013, 04:22
Voshre, сделайте больше статичных свойств для каждого пб.т.е.

в классе Data
C#
1
2
3
static public Bitmap pb2 { get; set; }
static public Bitmap pb3 { get; set; }
static public Bitmap pb4 { get; set; }
итд..
1
1 / 1 / 1
Регистрация: 28.07.2012
Сообщений: 80
05.07.2013, 04:26  [ТС]
Я думаю вот такой финт ушами сделать, примерно.
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
   public Form2()
        
        {
            
            InitializeComponent();
            
                pictureBox2.Click += (sender, e) =>
                {
                    Data.Image = new Bitmap(pictureBox2.Image);
 
                    this.Close();//если это не главная форма,то можно Close(),иначе закроется все приложение
                };
                pictureBox3.Click += (sender, e) =>
                {
                    Data.Image = new Bitmap(pictureBox3.Image);
 
                    this.Close();//если это не главная форма,то можно Close(),иначе закроется все приложение
                };
        }
        
        private void pictureBox2_Click(object sender, EventArgs e)
        {
            for (int i = 1; i < 41; i++)
            {
                if (pictureBoxi.Click = true)
                {
                    Data.Image = new Bitmap(pictureBoxi.Image);//ругается на pictureBoxi, хотя i вместо цифры ведь.
                }
            }
            
        }
}
0
 Аватар для mrReptiloid
313 / 176 / 25
Регистрация: 30.04.2011
Сообщений: 1,469
05.07.2013, 04:36
во-первых,так нельзя.
C#
1
if (pictureBoxi.Click = true)
во-вторых,не
C#
1
pictureBoxi
,а
C#
1
Controls["pictureBox"+i]
Я так понимаю,Вам нужно при клике на какой-нибудь пб(заранее неизвестно какой) записать его картинку в переменную?
Или как?потому что,Ваша логика будет перезаписывать данные.
0
1 / 1 / 1
Регистрация: 28.07.2012
Сообщений: 80
05.07.2013, 05:05  [ТС]
Цитата Сообщение от sniper_lunev Посмотреть сообщение
Я так понимаю,Вам нужно при клике на какой-нибудь пб(заранее неизвестно какой) записать его картинку в переменную?
Да-да. Я хочу выбирать в первой форме любой пб и чтобы открывалась вторая форма ну и т.д.
Вот это у меня работает для первых двух пб

Первая форма
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
 public Form1()
        {
            InitializeComponent();
          
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
        
        private void pictureBox2_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.ShowDialog();
            pictureBox2.Image = Data.pb1;
            
        }
 
        private void pictureBox3_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.ShowDialog();
            pictureBox3.Image = Data.pb2;
        }
Вторая форма
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
 public Form2()
        
        {
            
            InitializeComponent();
            
                pictureBox2.Click += (sender, e) =>
                {
                    
                    Data.pb1 = new Bitmap(pictureBox2.Image);
                    Data.pb2 = new Bitmap(pictureBox2.Image);
                    this.Close();
                };
                
        }
        
        private void pictureBox2_Click(object sender, EventArgs e)
        {
            
                    Data.pb1 = new Bitmap(pictureBox2.Image);
                    Data.pb2 = new Bitmap(pictureBox3.Image);
                    
           
        }
Добавлено через 12 минут
sniper_lunev, забыл спросить. Можете подсказать где тэги размещать в properties? Или в коде можно задать имя?
0
 Аватар для mrReptiloid
313 / 176 / 25
Регистрация: 30.04.2011
Сообщений: 1,469
05.07.2013, 05:23
так для каждого и делайте...или есть универсальный вариант,хотя возможно это просто пьяный бред.короче рефлексия в помощь.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Type myType;
public Form1()
        {
            InitializeComponent();
 myType=typeof(Data);       
 
for (int i = 1; i < 41; i++)
            {
pb.Click+=(sender,e)=>
{
PropertyInfo myPropInfo = myType.GetProperty("pb"+i);
            myPropInfo.SetValue(myType.GetProperty("pb"+i), new Bitmap(((PictureBox)sender).Image), null);
};
}
        }
не забываем
C#
1
using System.Reflection;
как-то так.но тут как бы надо,чтобы номер пб совпадал с номером свойства,т.е. pictureBox1 отвечает свойство pb1,pictureBox2-pb2 итд..
пишу "на коленях",синтаксические ошибки,если будут,думаю исправишь.

Добавлено через 2 минуты
Цитата Сообщение от Voshre Посмотреть сообщение
sniper_lunev, забыл спросить. Можете подсказать где тэги размещать в properties? Или в коде можно задать имя?
есть у picturebox.Image свойство Tag,т.е.
C#
1
picturebox.Image.Tag="smth";
вместо smth имя,или что там Вам нужно.

Не по теме:

и вообще,пора бы спать уже..4 часа ночи все-таки.

0
1 / 1 / 1
Регистрация: 28.07.2012
Сообщений: 80
05.07.2013, 05:30  [ТС]
Вот еще часть кода с проверкой условия нахождения определенных(по тэгу) картинок, в определенном месте для выхода результата. (прикладываю к коду картинку, дабы всё стало еще более ясным)

C#
1
2
3
4
5
6
7
private void pictureBox11_Click(object sender, EventArgs e)
        {
            if (pictureBox2.Image.Tag == "dsk"&&pictureBox3.Image.Tag == "dsk")
            {
                pictureBox11.Image = new Bitmap("palka.jpg");
            }
        }
Миниатюры
.Net 3.5 картинки на кнопках в двух формах  
0
1 / 1 / 1
Регистрация: 28.07.2012
Сообщений: 80
05.07.2013, 05:34  [ТС]
Спасибо за помощь, извините, если заставил не спать до 4ех утра, у меня день просто.)
0
 Аватар для mrReptiloid
313 / 176 / 25
Регистрация: 30.04.2011
Сообщений: 1,469
05.07.2013, 11:11
Спасибо за помощь, извините, если заставил не спать до 4ех утра, у меня день просто.)

Не по теме:

ну ты тут точно не при чем=)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.07.2013, 11:11

Зависимость двух таблиц StringGrid на двух формах
Добрый вечер.У меня есть таблица stringgrid на первой форме,вторая таблица на второй форме и две кнопки ,которые скрывают и показывают...

Перенесение данных в двух формах в C#
Здравствуйте. И так, у нас есть программа, в ней два окна (две формы). В первом окне есть поле пароля и логина, а во второй форме вы...

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

Проблема с переменными на двух формах
Есть куча форм. На главной форме объявляется переменная: Dim BCVK_Ready As Boolean 'Результат теста БЦВК На другой форме при...

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


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru