powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Условие для событий
4 сообщений из 4, страница 1 из 1
Условие для событий
    #38837645
Slant-shadow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Можете помочь правильно установить условия, чтобы события EventSome1 и EventSome2 выполнились один раз.
Код: 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.
public bool flag1 = true;
        public bool flag2 = true;
        public bool bclick1 = false;
        public bool bclick2 = false;
        public class Evert
        {
            public event EventHandler ev;
            public void EventSome1(EventArgs e)
            {
                EventHandler hdl = ev;
                if (ev != null)
                {
                    hdl(this, EventArgs.Empty);
                }
            }
 
            public void EventSome2(EventArgs e)
            {
                EventHandler hdl = ev;
                if (ev != null)
                {
                    hdl(this, EventArgs.Empty);
                }
        private void Click1(object sender, EventArgs e)
        {
            bclick1 = true;
            if (bclick1 == true && bclick2 == false)
            {
                if (flag1 == true)
                {
                    flag1 = false;
                    ever.EventSome1(EventArgs.Empty);
                    MessageBox.Show("Кнопка1 была нажата.");
                }
                grd.Visibility = Visibility.Collapsed;
                bclick2 = false;
                bclick1 = true;
            }
 
        }
 
        private void Click2(object sender, EventArgs e)
        {
            bclick2 = true;
            if (bclick1 == false && bclick2 == true)
            {
 
                if (flag2 == true)
                {
                    flag2 = false;
                    ever.EventSome2(EventArgs.Empty);
                    MessageBox.Show("Кнопка 2 была нажата.");
                }
                 grd.Visibility= Visibility.Collapsed;
                bclick1 = false;
                bclick1 = true;
            }
 
        }
            }
...
Рейтинг: 0 / 0
Условие для событий
    #38837706
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slant-shadowВсем привет.
Можете помочь правильно установить условия, чтобы события EventSome1 и EventSome2 выполнились один раз.
Код: 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.
public bool flag1 = true;
        public bool flag2 = true;
        public bool bclick1 = false;
        public bool bclick2 = false;
        public class Evert
        {
            public event EventHandler ev;
            public void EventSome1(EventArgs e)
            {
                EventHandler hdl = ev;
                if (ev != null)
                {
                    hdl(this, EventArgs.Empty);
                }
            }
 
            public void EventSome2(EventArgs e)
            {
                EventHandler hdl = ev;
                if (ev != null)
                {
                    hdl(this, EventArgs.Empty);
                }
        private void Click1(object sender, EventArgs e)
        {
            bclick1 = true;
            if (bclick1 == true && bclick2 == false)
            {
                if (flag1 == true)
                {
                    flag1 = false;
                    ever.EventSome1(EventArgs.Empty);
                    MessageBox.Show("Кнопка1 была нажата.");
                }
                grd.Visibility = Visibility.Collapsed;
                bclick2 = false;
                bclick1 = true;
            }
 
        }
 
        private void Click2(object sender, EventArgs e)
        {
            bclick2 = true;
            if (bclick1 == false && bclick2 == true)
            {
 
                if (flag2 == true)
                {
                    flag2 = false;
                    ever.EventSome2(EventArgs.Empty);
                    MessageBox.Show("Кнопка 2 была нажата.");
                }
                 grd.Visibility= Visibility.Collapsed;
                bclick1 = false;
                bclick1 = true;
            }
 
        }
            }


Столько косяков, что даже не знаю с чего начать. Наверное с удаления этой хрени и постановки задачи.
Что такое ever? Объявления этого объекта я так и не нашел.
авторсобытия EventSome1 и EventSome2

это не события, это обычные методы класса Evert

в этом куске кода есть какой-то глубокий смысл?
Код: c#
1.
2.
bclick1 = false;
bclick1 = true;


то же самое
Код: c#
1.
2.
bclick1 = true;
if (bclick1 == true


зачем делается вот это тоже для меня загадка:
Код: c#
1.
EventHandler hdl = ev;



в чем разница между EventSome1 и EventSome2?
я уже молчу про то, что не смог найти, где заканчивается метод EventSome2 и класс Evert

приведите код в порядок (чтобы хотя бы компилировался) или расскажите условия задачи и тогда вам возможно подскажут
...
Рейтинг: 0 / 0
Условие для событий
    #38837716
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JeStoneСтолько косяков, что даже не знаю с чего начать.
Начать нужно с выкидывания обработчиков кликов, и перевода всего этого жуткого codebehind'а на модельную логику с использованием ICommand - поскольку вышеприведенный код для WPF/SL, а там за подобное вышеприведенному больно бьют.
...
Рейтинг: 0 / 0
Условие для событий
    #38838809
Slant-shadow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
 
namespace WpfApplication3
{
    public class Event
    {
        public bool flag = true;
        public bool fl = true;
        Grid grd= new Grid();
        StackPanel sp= new StackPanel();
        Border bor = new Border();
        Button button1 = new Button();
        Button button2 = new Button();
        TextBlock tb = new TextBlock();
        public event EventHandler OnDone;
        private void OnSomeDone(EventArgs e)
        {
            EventHandler handler = OnDone;
            if (OnDone != null)
            {
                handler(this, EventArgs.Empty);
            }
        }
 
        public void Inform(string msg)
        {
            grd.Visibility = Visibility.Visible;
            
            sp.Orientation = Orientation.Horizontal;
            sp.Margin = new Thickness(10, 10, 10, 10);
            sp.Opacity = 1;
            sp.Background = Brushes.Orange;
 
            bor.Background = Brushes.Black;
            bor.BorderThickness = new Thickness(2, 0, 0, 0);
            bor.Background = Brushes.Orange;
            bor.Margin = new Thickness(0, 0, 0, 0);
            bor.Opacity = 0.5;
 
            
            button1.Content = "Button 1";
            button1.Width = 70;
            button1.Height = 40;
            button1.VerticalAlignment = VerticalAlignment.Top;
            button1.Margin = new Thickness(150, 240, 0, 0);
            button1.Click += new RoutedEventHandler(Click1);
 
           
            button2.Content = "Button 2";
            button2.Width = 70;
            button2.Height = 40;
            button2.VerticalAlignment = VerticalAlignment.Top;
            button2.Margin = new Thickness(10, 240, 0, 0);
            button2.Click += new RoutedEventHandler(Click2);
           
            grd.Visibility = Visibility.Visible;
 
            tb.Width = 180;
            tb.Height = 90;
            tb.Margin = new Thickness(-160, 100, 40, 0);
            tb.TextAlignment = TextAlignment.Center;
            tb.TextWrapping = TextWrapping.Wrap;
            tb.Text = msg;
 
           if (fl == true)
           {
               fl = false;
               obj.MainGrid.Children.Add(grd);
               grd.Children.Add(sp);
               grd.Children.Add(bor);
               grd.Children.Add(button1);
               grd.Children.Add(button2);
               grd.Children.Add(tb);
           }
        }
 
        public Event(MainWindow mw)
        {
            obj = mw;
 
            OnDone += Click1;
            OnDone += Click2;
        }
 
        public MainWindow obj { get; set; }
 
        private void Click1(object sender, EventArgs e)
        {
            if (flag == true)
            {
                flag = false;
                OnSomeDone(EventArgs.Empty);
                flag = true;
                obj.tb_Infotext.Clear();
                MessageBox.Show("Кнопка 1 была нажата.");
                sp.Children.Remove(tb);
            }
 
            grd.Visibility = Visibility.Collapsed;
           
        }
 
        private void Click2(object sender, EventArgs e)
        {
            if (flag == true)
            {
                flag = false;
                OnSomeDone(EventArgs.Empty);
                flag = true;
                obj.tb_Infotext.Clear();
                MessageBox.Show(Кнопка 2 была нажата.");
                sp.Children.Remove(tb);
            }
            grd.Visibility = Visibility.Collapsed;
        }
    }
}


Можете помочь по-другому записать это
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    if (fl == true)
           {
               fl = false;
               obj.MainGrid.Children.Add(grd);
               grd.Children.Add(sp);
               grd.Children.Add(bor);
               grd.Children.Add(button1);
               grd.Children.Add(button2);
               grd.Children.Add(tb);
           }


И как переделать, чтобы MessageBox.Show при повторном нажатии на кнопку не выводился, то есть event выполнялось один раз.

автор условия задачи и тогда вам возможно подскажут
По нажатию кнопки вызвать метод, который откроет панель на которой две кнопки и текст введенный в textbox перенесет в textblock, который расположен на открывшейся панели.
После этого по нажатию на одну из кнопок, выполнилось событие, оповещающее, что кнопка была нажата и панель закрылась.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Условие для событий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]