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

Передача значения переменных одного класса другому

23.11.2015, 03:13. Показов 1275. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Нужно передать значения одного класса другому, при этом семантика методов класса меняться не должна, так как они на событие Paint должны подписаться. Часть когда необходимого отредактировать написал уже от балды, чтобы вы имели некое представление моей задумки. Помогите люди знающие

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
public void DrawEllipse(object sender, PaintEventArgs e)
        {
            // надо заполучить значение state из другого класса
            //круг движется вправо value == 1
            if (/* что-то типа state == 1*/)
                X_el += speedEl;
            //круг движется влево value == -1
            else
                if (/* state == -1*/)
                    X_el -= speedEl;
           
            for (int i = 0; i < 3; i++)
            {
                e.Graphics.FillEllipse(Brushes.Red, X_el, Y_el, Side, Side);
                Y_el += 105;
            }
            Y_el = 40;
 
        }
    }
    public class Forward
    {
        int X_rec = 0, Width_Rec = 35, Height_Rec = 50, speedRec = 5;
        float Y_rec = 0, offset = 320 / 660F;
        bool left = false;
        int size, state;
        public Forward(int sze)
        {
            size = sze;
        }
        public int State
        {
            get { return state; }
            set { state = value; }
        }
        public void DrawRectangle(object sender, PaintEventArgs e)
        {
            X_rec += speedRec;
            Y_rec = offset * X_rec;
 
            if (X_rec + Width_Rec >= size)
            {
                speedRec = -speedRec;
                Y_rec = -offset * X_rec;
                left = true;
            }
            else if (X_rec <= 0)
            {
                speedRec = -speedRec;
                Y_rec = -offset * X_rec;
                left = false;
            }
            e.Graphics.FillRectangle(Brushes.Red, X_rec, Y_rec, Width_Rec, Height_Rec);
            if (X_rec >= size / 2 && left == false)
                state = 1;//нужно передать значение state,чтобы потом в условии другого класса указать так называемое состояние движения одного объекта ,для изменения направления другого
            else if (X_rec >= size / 2 && left == true)
                state = -1;
        }
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2015, 03:13
Ответы с готовыми решениями:

Передача значения переменной из метода одного класса в метод другого класса
Добрый вечер! Есть основная форма Form1 в которой есть метод private void button1_Click(object sender, EventArgs e) обрабатывающий...

Передача переменных из одного события в другое
Встала такая проблема надо из button_Ckick1 и trackBar1_Scroll захватить переменные a1,b1,b, и передать их в button_Click2, рассчитываю на...

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

5
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
23.11.2015, 03:31 2
Из данного кода совершенно не ясно, где вы создаете объект класса Forward. Саму задумку тоже стоит пояснить попонятнее.
0
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 38
24.11.2015, 00:01  [ТС] 3
Forward создается в конструкторе формы
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
24.11.2015, 00:07 4
Ну сделайте тогда его полем формы, на которой все это рисуется, и с проверкой свойства не будет никаких проблем. А вообще информации все равно недостаточно, поэтому могу быть не прав.
0
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 38
24.11.2015, 00:44  [ТС] 5
Вот некие наброски, думал может через события сделать, но блин потом не получится подписаться методу класса Defender на событие Paint, семантика другой будет, так как параметр входной добавится(пробовал так и не получается)
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
namespace Lab1
{
    public partial class Form1 : Form
    {
        Timer timer;
        Defender def;
        static Forward frw;
        Field fld;
        public Form1()
        {
            InitializeComponent();
            StartPosition = FormStartPosition.CenterScreen;
            MinimumSize = new Size(700, 400);
            MaximumSize = new Size(700, 400);
            this.BackColor = Color.LimeGreen;
            this.DoubleBuffered = true;
            def = new Defender();
            frw = new Forward(ClientSize.Width);
            fld = new Field();
            this.Paint += new PaintEventHandler(fld.ShowField);
            this.Paint += new PaintEventHandler(frw.DrawRectangle);
            this.Paint += new PaintEventHandler(def.DrawEllipse);
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            timer = new Timer();
            timer.Tick += new EventHandler(timer_Tick);
            timer.Interval = 1;
            timer.Start();
        }
 
        public void timer_Tick(object sender, EventArgs e)
        {
            Invalidate();
            timer.Stop();
        }
    }
    public class Defender
    {
        int X_el = 70, Y_el = 40, Side = 50, speedEl = 5;
        public void DrawEllipse(object sender, PaintEventArgs e)
        {
            //круг движется впарво
            if ( == 1)
                X_el += speedEl;
            //круг движется влево
            else
                if (== -1)
                    X_el -= speedEl;
           
            for (int i = 0; i < 3; i++)
            {
                e.Graphics.FillEllipse(Brushes.Red, X_el, Y_el, Side, Side);
                Y_el += 105;
            }
            Y_el = 40;
 
        }
    }
    public class Forward
    {
        int X_rec = 0, Width_Rec = 35, Height_Rec = 50, speedRec = 5;
        float Y_rec = 0, offset = 320 / 660F;
        bool left = false;
        int size;
        public Forward(int sze)
        {
            size = sze;
        }
        public void DrawRectangle(object sender, PaintEventArgs e)
        {
            X_rec += speedRec;
            Y_rec = offset * X_rec;
 
            if (X_rec + Width_Rec >= size)
            {
                speedRec = -speedRec;
                Y_rec = -offset * X_rec;
                left = true;
            }
            else if (X_rec <= 0)
            {
                speedRec = -speedRec;
                Y_rec = -offset * X_rec;
                left = false;
            }
            e.Graphics.FillRectangle(Brushes.Red, X_rec, Y_rec, Width_Rec, Height_Rec);
 
            if (X_rec >= size / 2 && left == false)
 
            else if (X_rec >= size / 2 && left == true)
        }
    }
 
    public class Field
    {
        public void ShowField(object sender, PaintEventArgs e)
        {
            var pen = new Pen(Color.White);
            pen.Width = 3;
            e.Graphics.DrawLine(pen, 350, 0, 350, 365);
            e.Graphics.DrawEllipse(pen, 275, 100, 150, 150);
            e.Graphics.FillEllipse(new SolidBrush(Color.White), 345, 170, 10, 10);
            e.Graphics.DrawRectangle(pen, 0, 100, 60, 150);
            e.Graphics.DrawRectangle(pen, 623, 100, 60, 150);
        }
    }
   
}
0
0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 38
26.11.2015, 01:02  [ТС] 6
Всем спасибо за уделенное внимание, сам разобрался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.11.2015, 01:02
Помогаю со студенческими работами здесь

Передача информации из одного класса в другой
У меня есть класс KeyCreator, там генерируется public string GetSerialNum(),public string CreateInstallationKey() и public string...

Передача из одной формы в другую с использованием Класса Глобальных переменных
Доброго времени суток. Пишу программу и возникла ошибка. Из формы 1(Main) в форму 2(deleted) не удается получить доступ к переменных. ...

Вызов метода и передача данных из одного класса в другой
Есть два класса, основной(Form1) и дополнительный(Class1). В дополнительном классе находится метод, который просто добавляет текст в...

Передача полей одного класса для редактирования в другом классе
Приятного времени суток. Есть такая задача: нужно передать поля одного класса для редактирования в другом классе (оба класса -...

Передача значения определенного столбца из одного datagridview в другой
Добрый день. Есть определенная проблема. Есть datagridview, необходимо, чтобы данные из всех строк из определенного столбца попали бы в...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Простая нейросеть на КуМир: Создание и обучение
EggHead 16.03.2025
Искусственные нейронные сети — удивительная технология, позволяющая компьютерам имитировать работу человеческого мозга. Если вы хотя бы немного интересуетесь современными технологиями, то наверняка. . .
Исполнитель Кузнечик в КуМир: Решение задач
EggHead 16.03.2025
Среди множества исполнителей в системе КуМир особое место занимает Кузнечик — простой, но невероятно полезный виртуальный персонаж, который перемещается по числовой прямой, выполняя ваши команды. На. . .
Исполнитель Водолей в КуМир: Решение задач
EggHead 16.03.2025
Разработка алгоритмического мышления — одна из ключевых задач для начинающих программистов, и система КуМир предлагает отличный способ погрузиться в этот процесс. Среди множества исполнителей в этой. . .
Исполнитель Чертежник в КуМир: Решение задач
EggHead 16.03.2025
Представьте, что вы можете рисовать на бесконечной координатной плоскости, перемещая точку, которая оставляет след. По вашей команде она может поднять перо и двигаться, не оставляя следа, или. . .
Исполнитель Робот в КуМир: Решение задач
EggHead 16.03.2025
КуМир (Комплект Учебных МИРов) — это учебная среда программирования, разработанная специально для обучения базовым концепциям алгоритмизации. Её главная фишка — использование русскоязычного. . .
Исполнитель Черепаха в КуМир: Решение задач
EggHead 16.03.2025
Представьте, что вы впервые учитесь программировать, а перед вами стоит задача заставить маленькую виртуальную черепашку рисовать на экране. Звучит забавно? Эта идея зародилась ещё в 1967 году, когда. . .
Конвейеры данных с Apache Kafka
Javaican 16.03.2025
В мире, где данные стали новой нефтью, Apache Kafka зарекомендовал себя как мощный инструмент для построения надежных и масштабируемых конвейеров данных. Созданный изначально командой LinkedIn в 2011. . .
Deno против Node.js: Будущее JavaScript рантайма
run.dev 16.03.2025
За последнее десятилетие Node. js стал абсолютным лидером среди JavaScript-рантаймов и фактическим стандартом для серверной разработки на JavaScript. Но в 2018 году тот же разработчик, который создал. . .
SwiftUI или UIKit - что выбрать для нового приложения iOS?
mobDevWorks 16.03.2025
Когда Apple представила SwiftUI на WWDC 2019, многим показалось, что дни UIKit сочтены. Новый декларативный фреймворк предлагал радикально иной подход к разработке интерфейсов. Вместо кропотливого. . .
Docker: Руководство для начинающих по созданию первого приложения
Mr. Docker 16.03.2025
Docker — это платформа, которая упаковывает ваше приложение и все его зависимости в стандартизированные блоки, называемые контейнерами. Эти контейнеры изолированы друг от друга и от основной системы,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер