Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
 Аватар для Artem1990
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
.NET 4.x

Неверная передача значений между наследуемыми классами

08.02.2013, 11:48. Показов 3730. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите. проблема появилась во время разработки. есть три класса
CalculationType_E_and_H()
CalculationSizeWaveguide()
PowerLoss()
наследуется таким образом:
C#
1
CalculationType_E_and_H() : CalculationSizeWaveguide()
C#
1
PowerLoss() : CalculationType_E_and_H()
так вот, метод
C#
1
public double CyclicFrequency()
класса
C#
1
CalculationType_E_and_H()
он наследется методом
C#
1
2
3
4
5
6
7
public double DepthSkinLayer()
         {
             double w = Math.Sqrt(2 / (CyclicFrequency() * Mia() * sigma));
             Debug.WriteLine("w={0}", w);
             return w;
             
         }
так вот почему методы
C#
1
CyclicFrequency() и Mia()
получаемые равны 0? помогите очень нужно, и если не затруднит пришлите почему и как. и как от этого избавиться в будующем? если можно объясните по подробней, потому что
C#
1
CalculationType_E_and_H() : CalculationSizeWaveguide()
методы передаются нормально.

вот программа:
Вложения
Тип файла: zip волноводы.zip (867.7 Кб, 12 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.02.2013, 11:48
Ответы с готовыми решениями:

Передача между классами
Имеются 2 класса Kisti.cs и Form1.cs Вот содержимое Kisti.cs: class Kisti { public static Pen Black = new...

Передача данных между классами
Элемент textbox не существует в данном контексте, как исправить? public class MyClass { public void raschet() { ...

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

39
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
11.02.2013, 20:31
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Artem1990 Посмотреть сообщение
вот такие ошибки получились)))
Я проверял. Все получилось

Сейчас сделаю и скину.
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
11.02.2013, 20:38
Artem1990,

Смотри
Вложения
Тип файла: zip Волноводы.zip (852.1 Кб, 2 просмотров)
1
 Аватар для Artem1990
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
11.02.2013, 22:20  [ТС]
или я где то неправильно что-то сделал?
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
11.02.2013, 22:31
Вы сделали
public PowerLoss( int sigma, int m, int n, double a, double b, double l, double f, double mi): base (f, mi)

Судя по ошибке Ошибка 3 "Волноводы.PowerLoss" не содержит конструктор, который принимает аргументы "8" нет
1
 Аватар для Artem1990
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
11.02.2013, 23:25  [ТС]
Да! моя ошибка, извиняюсь. Пока работает все супер.
но есть еще вопрос. но нижний метод возвращает не число
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Мнимая часть продольного волнового числа для Е
         private double ImaginaryPartForE()
         {
             double lyambda = base.WavelengthGenerator();
             double lyambdaKr = base.СriticalWaveLength();
             Debug.WriteLine("\n Критическая длинна={0}", base.СriticalWaveLength());
             Debug.WriteLine("\n длинна от генератора={0}", base.WavelengthGenerator());
             //первая часть
             double FirstPart = zc*sigma*b*DepthSkinLayer()*Math.Sqrt(1-Math.Pow((lyambda/lyambdaKr),2));
             //вторая часть
             double SecondPart = (Math.Pow(m, 2) * Math.Pow((b / a), 3) + Math.Pow(n, 2)) / 
                 (Math.Pow(m, 2) * Math.Pow((b / a), 2) + Math.Pow(n, 2));
             //непосредственно вычесление
             return (2 / FirstPart) * SecondPart;
 
         }
вроде бы конструктор изменен и должно вычисляться? я что-то запутался со всем этим
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
12.02.2013, 07:27
Artem1990,

Скиньте код, если изменили прошлый вариант.

Что нажать на форме, что бы запустить этот метод (что бы долго не изучать код) ?
0
 Аватар для Artem1990
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
12.02.2013, 11:18  [ТС]
Оказалось что в метод класса CalculationType_E_and_H

C#
1
2
3
4
5
6
//Расчет Критической длинны волны на основе полученных размеров
        public double СriticalWaveLength()
        {
            return 2 / Math.Sqrt(Math.Pow(m / a, 2) + Math.Pow(n / b, 2));
 
        }
получает значения m=0, n=0 другие переменные не смотрел.
другой метод тоже не смотрел, получается что этот метод передает не число! конструктор передаются значения, а в методе нет их.
Вложения
Тип файла: rar Волноводы.rar (556.8 Кб, 2 просмотров)
0
 Аватар для Artem1990
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
12.02.2013, 11:28  [ТС]
и метод класса CalculationSizeWaveguide приходят NaN

C#
1
2
3
4
5
6
//Расчет длинны волны от гениратора
        public double WavelengthGenerator()
        {
            return c / f; //Длинна волны от гениратора
            
        }


вот оно и приходит в метод со значением Nan
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//Мнимая часть продольного волнового числа для Е
         private double ImaginaryPartForE()
         {
             double lyambda = base.WavelengthGenerator();
             double lyambdaKr = base.СriticalWaveLength();
             Debug.WriteLine("\n Критическая длинна={0}", base.СriticalWaveLength());
             Debug.WriteLine("\n длинна от генератора={0}", base.WavelengthGenerator());
             //первая часть
             double FirstPart = zc*sigma*b*DepthSkinLayer()*Math.Sqrt(1-Math.Pow((lyambda/lyambdaKr),2));
             //вторая часть
             double SecondPart = (Math.Pow(m, 2) * Math.Pow((b / a), 3) + Math.Pow(n, 2)) / 
                 (Math.Pow(m, 2) * Math.Pow((b / a), 2) + Math.Pow(n, 2));
             //непосредственно вычесление
             return (2 / FirstPart) * SecondPart;
 
         }
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
12.02.2013, 23:21
Artem1990,
С остальными переменными та же проблема. Они не передаются в конструкторы базовых классов.
Как следствие - эти переменные имеют нулевые значения в конструкторах производных классах.
Я дал пример только для двух переменных. Показал принцип.

Давай теперь попробуем это сделать для всех переменных.

1. Имеем класс и его конструктор
public CalculationSizeWaveguide(double f, int m, int n)

2. Имеем производный от CalculationSizeWaveguide класс и конструктор

CalculationType_E_and_H : CalculationSizeWaveguide
public CalculationType_E_and_H(double f, int m, int n, double e, double mi, double a, double b)


нужно передать в его базовый класс соответственно (f, m, n)
Тогда переделаем конструктор в такой вид
public CalculationType_E_and_H(double f, int m, int n, double e, double mi, double a, double b): base (f, m, n)

3. Имеем производный от CalculationType_E_and_H класс и конструктор

PowerLoss : CalculationType_E_and_H
public PowerLoss( int sigma, int m, int n, double a, double b, double l, double f, double mi)


нужно передать в его базовый класс соответственно (f, m, n, e, mi, a, b)
переменную e передать в базовый не можем, т.к. его в конструкторе для PowerLoss пока нет.
Добавим эту переменную (хотя, похоже она и не нужна тебе в PowerLoss) и теперь перепишем конструктор так

public PowerLoss( int sigma, int m, int n, double a, double b, double l, double f, double mi, double e)
: base(f, m, n, e, mi, a, b)


Теперь, нужные переменные передаются правильно в соответствующие объекты.

На всякий случай, скинул измененный проект. Тестируй. Может чего упустил.
Вложения
Тип файла: zip Волноводы.zip (845.5 Кб, 3 просмотров)
1
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
12.02.2013, 23:35
Проверь, правильно ли передаются переменные в методы. Я не проверял

Можно вообще создать класс для хранения переменных и извлекать их по мере надобности в конструкторах (которые без параметров)
1
 Аватар для Artem1990
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
13.02.2013, 09:35  [ТС]
Все работает как по маслу! Спасибо!
0
 Аватар для Artem1990
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
17.02.2013, 21:50  [ТС]
Опять возвращаюсь к этой теме написал еще один класс который предназначен для рисования Структуры поля PaintGraphics.cs он является наследником класса CalculationType_E_and_H.cs и получает методы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public double Ex(int x, int y)
        {
            double Ex = -(LongitudinalWaveNumber() / Math.Pow(TransverseWaveNumber(), 2)) *
                ((m * Math.PI) / a) * Math.Cos(((m * Math.PI) / a) * x) * Math.Sin(((n * Math.PI) / b) * y);
            Debug.WriteLine("Ex = {0}",Ex);
            return Ex;
        }
 
        public double Ey(int x, int y)
        {
            double Ey = -(LongitudinalWaveNumber() / Math.Pow(TransverseWaveNumber(), 2)) *
                ((n * Math.PI) / b) * Math.Sin(((m * Math.PI) / a) * x) * Math.Cos(((n * Math.PI) / b) * y);
            return Ey;
        }
в x и y передаются значения из цикла в классе PaintGraphics.cs.
При нажатии кнопки "структура" на форме P_Volnovod происходит отображение формы GraphicsForm и отрисовка поля. Я создал конструктор в классе PaintGraphics.cs и сделал наследование и передал ему значения при нажатии кнопки!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 class PaintGraphics: CalculationType_E_and_H
    {
 
            double e, mi, f, a, b; // Электрическая приницаемость, магнитная проницаемость, частота
            int m, n;//индексы
 
        public PaintGraphics()
            { }
            public PaintGraphics(double f, int m, int n, double e, double mi, double a, double b)
                :base(f,m,n,e,mi,a,b)
 
            {
                this.f = f;
                this.m = m;
                this.n = n;
                this.e = e;
                this.mi = mi;
                this.a = a;
                this.b = b;
                Debug.WriteLine("{0}, {1}, {2}, {3}, {4}, {5} , {6}", f, m, n, e, mi, a, b);
            }
но все равно не пишет NaN значения и не рисует структуры! Может поможете прояснить ситуацию, что же я все таки делаю неправильно. и если не затруднит посмотрите на код для рисования стрелок. как то странно они выглядят! маленькие треугольники, а должны по идеи стрелки полноценные, может я с координатами накосячил? Жду ващей помощи товарищи профессионалы!))
0
 Аватар для Artem1990
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
17.02.2013, 21:53  [ТС]
Исходники
Вложения
Тип файла: rar Волноводы.rar (593.4 Кб, 2 просмотров)
0
 Аватар для Artem1990
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
18.02.2013, 21:45  [ТС]
кто нибудь дайте ответ.
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
19.02.2013, 10:41
Artem1990,

Похоже вы совсем заблудились в конструкторах

1. Смотрим class GraphicsForm : Form и там PaintGraphics RW = new PaintGraphics();
Вы запускаете конструктор PaintGraphics() без параметров.

Ок. Заходим в сам класс PaintGraphics, чей конструктор запускается. Там два конструктора, с параметрами и без.
С параметрами вы не запускаете (смотри выше). Получается, что все поля double f, int m, int n, double e, double mi, double a, double b будут нулевые, ведь им ничего не передалось.

Следовательно из формы class GraphicsForm : Form вы должны передать данные в конструктор с параметрами так: PaintGraphics RW = new PaintGraphics( f,m,n,E,mi,a,b). Но эти переменные форма не знает. Следовательно, они там должны как то появиться.

2. Берем класс class PaintGraphics: CalculationType_E_and_H
Для доступа к Ex(x, y) и Ey(x, y)вы создаете новый объект CalculationType_E_and_H WaveStruct = new CalculationType_E_and_H();. К тому же запустили конструктор без параметров, и как следствие у WaveStruct все поля будут нулевые.
Зачем вообще создавать объект WaveStruct? Ведь PaintGraphics уже унаследовал методы Ex и Eу , и их можно запускать напрямую. Только полям нужно передать значения, как писал выше, а они передадутся дальше в CalculationType_E_and_H через base .

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
           public void Drow(Graphics e)
            {
                for (int x = 0; x < 800; x += 50)
                    for (int y = 0; y < 400; y += 50)
                    {
                        e.SmoothingMode = SmoothingMode.AntiAlias;
 
                        float E = (float)Math.Abs(Math.Sqrt(Math.Pow(Ex(x, y), 2) + Math.Pow(Ey(x, y), 2)));
                        Debug.WriteLine("{0}",Ex(x,y));
                        if (E <= 0.0094 & E >= 0.0074)
                        {
                            Pen pen = new Pen(Color.Red, 3);
                            pen.StartCap = LineCap.Flat;
                            pen.EndCap = LineCap.ArrowAnchor;
                            e.DrawLine(pen, x, y, x + (float)Ex(x, y), y + (float)Ey(x, y));
 
                        }
// и т.д

Больше не смотрел.

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

Если метод не возвращает нужное значение, сделайте точку останова в нем.
Посмотрите, чему равны переменные. Если если нулевые, а не должны, значит они не были переданы. Небыли переданы - смотрим почему. И т.д
1
 Аватар для Artem1990
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
19.02.2013, 23:11  [ТС]
Спасибо, я теперь разобрался. чтобы конструктор сработал нужно в него передать значения из того места откуда вызывается класс?! я поступил проще с создал Panel с именем на вкладке TabControl И и из его события Paint рисую. В класс PaintGraphics.cs передаются значения формулы, но что то не рисуется на
C#
1
2
3
4
5
 private void Struct_Paint(object sender, PaintEventArgs t)
        {
            PaintGraphics PG = new PaintGraphics(f, m, n, E, mi, a, b);
            PG.Drow(t.Graphics);
        }
а если выделить метод класса в отдельную программу
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
public void Drow(Graphics g)
            {
                for (int x = 0; x < 800; x += 50)
                    for (int y = 0; y < 400; y += 50)
                    {
                        g.SmoothingMode = SmoothingMode.AntiAlias;
 
                        float E = (float)Math.Abs(Math.Sqrt(Math.Pow(Ex(x, y), 2) + Math.Pow(Ey(x, y), 2)));
                        Debug.WriteLine("{0}",Ex(x,y));
                        if (E <= 0.0094 & E >= 0.0074)
                        {
                            Pen pen = new Pen(Color.Red, 3);
                            pen.StartCap = LineCap.Flat;
                            pen.EndCap = LineCap.ArrowAnchor;
                            g.DrawLine(pen, x, y, x + (float)Ex(x, y), y + (float)Ey(x, y));
 
                        }
 
                        if (E < 0.0074 & E >= 0.0053)
                        {
                            Pen pen = new Pen(Color.Blue, 3);
                            pen.StartCap = LineCap.Flat;
                            pen.EndCap = LineCap.ArrowAnchor;
                            g.DrawLine(pen, x, y, x + (float)Ex(x, y), y + (float)Ey(x, y));
                        }
 
                        if (E < 0.0053 & E >= 0.0026)
                        {
                            Pen pen = new Pen(Color.Green, 3);
                            pen.StartCap = LineCap.Flat;
                            pen.EndCap = LineCap.ArrowAnchor;
                            g.DrawLine(pen, x, y, x + (float)Ex(x, y), y + (float)Ey(x, y));
                        }
                        if (E < 0.0026 & E >= 0)
                        {
                            Pen pen = new Pen(Color.Black, 3);
                            pen.StartCap = LineCap.Flat;
                            pen.EndCap = LineCap.ArrowAnchor;
                            g.DrawLine(pen, x, y, x + (float)Ex(x, y), y + (float)Ey(x, y));
                        }
                    }
И переработать в
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
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
                for (int x = 0; x < 800; x += 50)
                    for (int y = 0; y < 400; y += 50)
                    {
                        g.SmoothingMode = SmoothingMode.AntiAlias;
 
                        double a = -0.065 * Math.Sin(39.27 * x) * Math.Cos(56 * y);
                        double b = -0.26 * Math.Sin(39.27 * x) * Math.Sin(17 * y);
                        float Ex = (float)a ;
                        float Ey = (float)b;
                        float E = (float)Math.Abs(Math.Sqrt(Math.Pow(Ex, 2) + Math.Pow(Ey, 2)));
                        
                        if (E <= 0.0094 & E >= 0.0074)
                        {
                            Pen pen = new Pen(Color.Red, 3);
                            pen.StartCap = LineCap.Flat;
                            pen.EndCap = LineCap.ArrowAnchor;
                            g.DrawLine(pen, x, y, x + (float)Ex, y + (float)Ey);
 
                        }
 
                        if (E < 0.0074 & E >= 0.0053)
                        {
                            Pen pen = new Pen(Color.Blue, 3);
                            pen.StartCap = LineCap.Flat;
                            pen.EndCap = LineCap.ArrowAnchor;
                            g.DrawLine(pen, x, y, x + (float)Ex, y + (float)Ey);
                        }
 
                        if (E < 0.0053 & E >= 0.0026)
                        {
                            Pen pen = new Pen(Color.Green, 3);
                            pen.StartCap = LineCap.Flat;
                            pen.EndCap = LineCap.ArrowAnchor;
                            g.DrawLine(pen, x, y, x + (float)Ex, y + (float)Ey);
                        }
                        if (E < 0.0026 & E >= 0)
                        {
                            Pen pen = new Pen(Color.Black, 3);
                            pen.StartCap = LineCap.Flat;
                            pen.EndCap = LineCap.ArrowAnchor;
                            g.DrawLine(pen, x, y, x + (float)Ex, y + (float)Ey);
                        }
                    }
(это формула уже вычислена в конкретные значения)
то рисуется ерунда а по идее это должна быть стрелка! просто это уже завершающий этап. половину интерната обрыскал не как не могу найти чтобы по нажатию кнопки из класса на Panel рисовал метод этого класса и почему стрелки похожи на треугольники? я вот ели разобрался с координатами, а тут это(((
прилагаю скрин и прогу
Вложения
Тип файла: rar Волноводы.rar (596.9 Кб, 2 просмотров)
0
 Аватар для Artem1990
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
19.02.2013, 23:15  [ТС]
Скрин получившийся при визуализации кода, вместо стрелок треугольники может как нибудь их отмаштабировать, была идея Переменные Ex и Ey умнажать на значение допустим 10. получается так что, в начале они треугольники, а к краю правому уже стрелки но возрастающие в длинне! как это осуществить по грамотному?
0
 Аватар для Artem1990
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
19.02.2013, 23:18  [ТС]
https://www.cyberforum.ru/images/attach/jpg.gif
Миниатюры
Неверная передача значений между наследуемыми классами  
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
20.02.2013, 15:24
Цитата Сообщение от Artem1990 Посмотреть сообщение
Спасибо, я теперь разобрался. чтобы конструктор сработал нужно в него передать значения из того места откуда вызывается класс?!
Да. Но если сказать точнее, то сработает тот конструктор (если их несколько), параметры которого совпадают с передаваемыми аргументами создаваемого объекта. При этом не значит, что поля класса сохранят эти значения для других объектов. Класс - это инструкция(чертеж, макет и т.п) по которому создается объект и задается его поведение. При построении, новый объект всегда "видит" эту инструкцию (класс) впервые.





Цитата Сообщение от Artem1990 Посмотреть сообщение
то рисуется ерунда а по идее это должна быть стрелка!
Я не сталкивался с маркерами.
Но, немного изучив ваш случай, пришел к такому выводу:

1. Размер маркера зависит только от числа A (условно) в выражении Pen pen = new Pen(Color.Black, A);

2. Длину стрелки формирует разница координат между двумя точками. У вас она просто мизерная
C#
1
g.DrawLine(pen, x, y, x + (float)Ex, y + (float)Ey)
Поэтому, "хвоста" и невидно.


Следовательно, у нас две задачи - нарисовать маркер (т.е. задать направление) и иметь такие значения, что бы был виден "хвост" стрелки.

Я попробовал такой вариант
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
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
 
            int kX, kY;
            
            for (int x = 0; x < 800; x += 50)
                for (int y = 0; y < 400; y += 50)
                {
                    g.SmoothingMode = SmoothingMode.AntiAlias;
 
                    double a = -0.065 * Math.Sin(39.27 * x) * Math.Cos(56 * y);
                    double b = -0.26 * Math.Sin(39.27 * x) * Math.Sin(17 * y);
                    float Ex = (float)a;
                    float Ey = (float)b;
                    float E = (float)Math.Abs(Math.Sqrt(Math.Pow(Ex, 2) + Math.Pow(Ey, 2)));
 
 
 
                        Pen pen = new Pen(Color.Black, 3);
                        pen.StartCap = LineCap.Flat;
                        pen.StartCap = LineCap.ArrowAnchor;
 
                        if (Ex > 0) kX = 10;
                        else kX = -10;
 
                        if (Ey > 0) kY = 10;
                        else kY = -10;
 
                        g.DrawLine(pen, x, y, x + (float)(Ex +kX), y + (float)(Ey+kY));
              
                }
        }
Вроде все работает.
Но, меня смущает, что количество маркеров и их направления другие, чем без kX и kY.

Если это верное направление мысли, может дожмете тему?
0
 Аватар для Artem1990
2 / 2 / 0
Регистрация: 06.01.2013
Сообщений: 114
21.02.2013, 18:31  [ТС]
по поводу стрелок, я У руководителя диплома спрошу, поскольку сам смутно представляю как они должны рисоваться (направление)! вот только не рисуется
C#
1
2
3
4
5
6
 private void Struct_Paint(object sender, PaintEventArgs e)
        {
            PaintGraphics PG = new PaintGraphics(f, m, n, E, mi, a, b);
            PG.Drow(e.Graphics);
            Invalidate();
        }
полно кода GDI+ в инете но похожего что-то нет. при перетаскивании формы происходит событие Invalidate(); перерисовывает но нечего не отображается?! вот пытаюсь осваивать и понимать что делаю, потому что потом еще и бумагу марать и описовать прогу! Программы раньше писал небольшие, а вот с GDI+ не работал. Только здесь столкнулся. Событие как я правильно понял Paint. вызвал экземпляр класса, создал ссылку на метод и перерисовал. мне кажется что-то не так здесь
C#
1
PG.Drow(e.Graphics);
Добавлено через 19 часов 16 минут
закралось подозрение что это происходит из-за того что "панель" расположена в вкладке TabControl. потому что пробовал просто на форму и на панель без tabControl событие paint работает, метод рисует, а вот как щас не может от рисовать, происходит событие но не рисует
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.02.2013, 18:31

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

Передача данных между классами
Как перевести a.ToString() или же fff из public void getdata в void Fillcombo() для последующей обработки? public void...

Передача значений между классами
Как передать значение int-овой переменной из одного класса в другой? Всё было бы просто если оба класса были унаследованы от Activity....

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
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) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru