0 / 0 / 0
Регистрация: 01.07.2013
Сообщений: 38
1

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

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

Всем привет. Нужно передать значения одного класса другому, при этом семантика методов класса меняться не должна, так как они на событие 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2015, 03:13
Ответы с готовыми решениями:

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

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

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

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

5
974 / 869 / 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
974 / 869 / 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2015, 01:02
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru