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

2 обработчика на 1 кнопку

24.05.2014, 12:13. Показов 1446. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно повесить 2 разных обработчика событий на 1 кнопку, возможно ли это и если да, то как?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.05.2014, 12:13
Ответы с готовыми решениями:

Удалить кнопку из ее же обработчика OnClick
описал свой тип с компонентами button и checkbox type TTest = record check:TCheckBox; btnDel:TButton; ...

Скрыть и отключить кнопку при запуске ее обработчика(нажатии)
Нужно такое сделать, чтобы исключить повторное нажатие кнопки, пока загружается страница.

Создание обработчика нажатия на кнопку для добавления строки в таблицу (Swing)
Подскажите пожалуйста , как прикрепить слушателся к кнопке, чтоб при нажатии на нее она добавляла новую строчку в таблице? iimport...

14
349 / 262 / 65
Регистрация: 07.04.2014
Сообщений: 1,603
24.05.2014, 12:18
нужно повесить 2 разных обработчика событий на 1 кнопку
Опишите задачу яснее. 2 обработчика для 1 события или для разных?
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
24.05.2014, 12:19
Shuralord, а зачем два обработчика на одно и то же событие ? все можно сделать в одном
1
0 / 0 / 0
Регистрация: 13.05.2012
Сообщений: 44
24.05.2014, 12:40  [ТС]
намудрил с if только что, работает, но правильно ли это
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private void button4_Click(object sender, EventArgs e)
        {
           if(textBox2.Visible==false)
            {data1 = dateTimePicker1.Value.ToString("yyyy-MM-dd");
            data2 = dateTimePicker2.Value.ToString("yyyy-MM-dd");
            
            textBox1.Text = "";
            textBox1.Text = "select * from tovaru where T_DatePocup >= '" + data1 + "' AND T_DatePocup <= '" + data2 + "'";
            Execute();
            }
           
            if(textBox2.Visible==true){
                
                 code1= textBox2.Text;
                 
                 textBox2.Text = "";
                 textBox1.Text = "SELECT COUNT(*) FROM `tovaru` WHERE `P_Code`='" +code1+ "'";
                    Execute();
            
            
            }
        }
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
24.05.2014, 12:46
а ты меняешь видимость текст бокса в программе ? зачем проверять

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if(!textBox2.Visible)
            {data1 = dateTimePicker1.Value.ToString("yyyy-MM-dd");
            data2 = dateTimePicker2.Value.ToString("yyyy-MM-dd");
            
            textBox1.Clear();
            textBox1.Text = "select * from tovaru where T_DatePocup >= '" + data1 + "' AND T_DatePocup <= '" + data2 + "'";
            Execute();
            }
            else
            {
                 code1= textBox2.Text;
                 
                 textBox2.Clear();
                 textBox1.Text = "SELECT COUNT(*) FROM `tovaru` WHERE `P_Code`='" +code1+ "'";
                 Execute();
                       
            }
1
0 / 0 / 0
Регистрация: 13.05.2012
Сообщений: 44
24.05.2014, 12:49  [ТС]
проверку запихнул чтобы привязать if хоть к чему то, попытался завести переменную, для этого работать не хочет, сижу эксперементирую
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 private void button4_Click(object sender, EventArgs e)
        {
           if(k==1)
            {data1 = dateTimePicker1.Value.ToString("yyyy-MM-dd");
            data2 = dateTimePicker2.Value.ToString("yyyy-MM-dd");
            
            textBox1.Text = "";
            textBox1.Text = "select * from tovaru where T_DatePocup >= '" + data1 + "' AND T_DatePocup <= '" + data2 + "'";
            Execute();
            }
           
            if(k==2){
                
                 code1= textBox2.Text;
                 
                 textBox2.Text = "";
                 textBox1.Text = "SELECT COUNT(*) FROM `tovaru` WHERE `P_Code`='" +code1+ "'";
                    Execute();
            
            
            }
        }
так не работает почему то(
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
24.05.2014, 13:00
Shuralord, что не работает , и нафиг проверка если ты не изменяешь условие проверки...
1
0 / 0 / 0
Регистрация: 13.05.2012
Сообщений: 44
24.05.2014, 13:05  [ТС]
не совсем пойму вас
мне собственно нужно чтобы при k=1
исполнялся
C#
1
2
3
4
5
6
data1 = dateTimePicker1.Value.ToString("yyyy-MM-dd");
                data2 = dateTimePicker2.Value.ToString("yyyy-MM-dd");
            
                textBox1.Text = "";
                textBox1.Text = "select * from tovaru where T_DatePocup >= '" + data1 + "' AND T_DatePocup <= '" + data2 + "'";
                Execute();
при k=2, это
C#
1
2
3
4
code1= textBox2.Text;
                 textBox2.Text = "";
                 textBox1.Text = "SELECT COUNT(*) FROM `tovaru` WHERE `P_Code`='" +code1+ "'";
                    Execute();
не пишу else, потому что может ещё добавлю 3е событие
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
24.05.2014, 13:12
Shuralord, оно так и будет выполняться .
Вы гдето задаете "к" ?
1
0 / 0 / 0
Регистрация: 13.05.2012
Сообщений: 44
24.05.2014, 13:15  [ТС]
ну вот весь код этой формы фактически
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Data.Common;
using System.Collections;
using System.Media;
 
namespace garant
{
    public partial class Form4 : Form
    {
        public Form4()
        {
            InitializeComponent();
          
        }
        string data1,data2;
        string code1;
        int k=0;
        private void Form4_Load(object sender, EventArgs e)
        {
            ToolTip t2 = new ToolTip();
            t2.SetToolTip(button2, "Выход");
            ToolTip t1 = new ToolTip();
            t1.SetToolTip(button1, "Вернуться");
            ToolTip t3 = new ToolTip();
            t3.SetToolTip(button3, "Очистить");
            
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
            Program.MainForm.Activate();
             
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        private void Execute()
        {
            MySqlDataReader mysqldatareadergar;
            dataGridView1.Refresh();
        if (textBox1.Text == "")
            {
                MessageBox.Show("Введите или выберите запрос!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
        try
        {
            string connectionString = "server=localhost;User Id=root;Character Set=cp1251;database=garantiya";
            MySqlConnection connect = new MySqlConnection(connectionString);
            connect.Open();
            MySqlCommand mysqlcommand = new MySqlCommand(textBox1.Text, connect);
            mysqldatareadergar = mysqlcommand.ExecuteReader();
            // массив для записи даннЫх
            ArrayList arraylist = new ArrayList(0);
            foreach (DbDataRecord record in mysqldatareadergar)
            {
                arraylist.Add(record); // запись результатов запроса
            }
            // закрытие соединения        
            mysqldatareadergar.Close();
            // перенос результатов в таблицу вывода
            dataGridView1.DataSource = arraylist;
        }
        catch
        {
            MessageBox.Show("Введите или выберите запрос!", "Ошибка!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;
        }
 
        
        }
        private void товарToolStripMenuItem_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            textBox1.Text = "select * from tovaru where T_Kod= '1'";
        }
        
        
        
 
        private void button3_Click(object sender, EventArgs e)
        {
            //очистка формы
            k = 0;
            label1.Visible = false;
            textBox2.Visible = false;
            textBox1.Visible = false;
            dateTimePicker1.Visible = false;
            dateTimePicker2.Visible = false;
            button4.Visible = false;
            textBox1.Text = "";
            ArrayList arraylist = new ArrayList(0);
            dataGridView1.DataSource = arraylist;
            SoundPlayer player = new SoundPlayer(@"1.wav");
            player.Play();
        }
 
        private void запрос1ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            k = 1;
            textBox1.Text = "";
            textBox1.Text = "select * from tovaru where T_Kod= '1'";
            Execute();
        }
 
        private void запрос2ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            k = 2;
            dateTimePicker1.Visible = true;
            dateTimePicker2.Visible = true;
            button4.Visible = true;
            //textBox1.Visible = true;
            
            
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            if (k==1)
            {
                data1 = dateTimePicker1.Value.ToString("yyyy-MM-dd");
                data2 = dateTimePicker2.Value.ToString("yyyy-MM-dd");
            
                textBox1.Text = "";
                textBox1.Text = "select * from tovaru where T_DatePocup >= '" + data1 + "' AND T_DatePocup <= '" + data2 + "'";
                Execute();
            }
 
          //  if (textBox2.Visible == true)
            else
            {
                
                 code1= textBox2.Text;
                 textBox2.Text = "";
                 textBox1.Text = "SELECT COUNT(*) FROM `tovaru` WHERE `P_Code`='" +code1+ "'";
                    Execute();
            
            
            }
        }
 
        private void количествоToolStripMenuItem_Click(object sender, EventArgs e)
        {
            label1.Visible = true;
            button4.Visible = true;
            textBox2.Visible = true;
            
            textBox1.Text = "";
        }
 
       
 
    }
}
оно не работает нормально, не то сдвиг какой то происходит, не то не пойму что
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
24.05.2014, 13:22
не выполняется событие "button4_Click" ? этот обработчик подписан на событие "button4_Click"
1
0 / 0 / 0
Регистрация: 13.05.2012
Сообщений: 44
24.05.2014, 13:27  [ТС]
событие выполняется, но криво
в первом варианте работало нормально
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
24.05.2014, 13:37
Цитата Сообщение от Shuralord Посмотреть сообщение
событие выполняется, но криво
в первом варианте работало нормально
ну пиши код чтобы выполнялось не криво , или конкретно напиши в чем проблема
1
0 / 0 / 0
Регистрация: 13.05.2012
Сообщений: 44
24.05.2014, 13:45  [ТС]
проблема в том что, как я понял, переменной или присваивается неправильное значение, либо неправильно считывается
в случае когда должно срабатывать 1е, срабатывает второе, а когда должно второе, не срабатывает ничего

Добавлено через 5 минут
все работает я баран просто, не туда втулил присвоение переменной значения, перенес, все работает
спасибо за потраченное время
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
24.05.2014, 13:47
Лучший ответ Сообщение было отмечено Shuralord как решение

Решение

Цитата Сообщение от Shuralord Посмотреть сообщение
все работает я баран просто, не туда втулил присвоение переменной значения, перенес, все работает
спасибо за потраченное время
да всегда ошибки из-за не внимательности ,
на будущее пользуйся отладчиком , в нем можно явно узнать какие значения у переменных во время выполнения
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.05.2014, 13:47
Помогаю со студенческими работами здесь

AJAX вместо результата обработчика возвращает, исходный код обработчика
Здравствуйте, начал изучать AJAX и столкнулся с проблемой, при GET запросе в котором я стучу в файл php и требую что бы он вернул текст с...

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

При нажатии на кнопку "Всем привет" вывести сообщение `alert("привет")` кнопку удалить и добавить новую кнопку.
как сделать чтобы при нажатие на кнопку всем привет выводилось сообщение alert(&quot;привет&quot;) кнопка всем привет удалялась и...

При наведении курсора на кнопку вывести эту кнопку на передний план
Можно ли сделать так что при наведении курсора на Button в запущенном проекте он бы вставал а передний план, если да то как

Как оставив кнопку minimize удалить кнопку maximize в Windows Form?
Всем здравствуйте. Устанавливаю: FormBorderStyle = Fixed Single MaximizeBox = False MinimizeBox = True В этом случае MaximizeBox...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки 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. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru