Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/117: Рейтинг темы: голосов - 117, средняя оценка - 4.64
4 / 4 / 0
Регистрация: 21.12.2013
Сообщений: 91

Инициализатор поля не может обращаться к нестатическому полю, методу или свойству

21.05.2014, 03:05. Показов 22535. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, пишу прогу, которая строит график функции согласно формуле, но тут столкнулся с такой вот ошибкой: "Инициализатор поля не может обращаться к нестатическому полю, методу или свойству "WindowsFormsApplication1.Form1.txt_ a1"

А началось при попытке объявить переменные: a1, a2, b1, b2, xmin, xmax. Переменные должны вводиться с textBox, у каждого свой, а тут такая ошибка. Я совсем новичок, поэтому прошу сильно заумно не разъяснять.

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
166
167
168
169
170
171
172
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 System.Drawing.Drawing2D;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        const byte Ngr = 4, NPoint = 100;
 
        const double xmin = 0, xmax = 6*Math.PI;
        double a1 = Convert.ToDouble(txt_a1.Text);
        double a2 = Convert.ToDouble(txt_a2.Text);
        double b1 = Convert.ToDouble(txt_b1.Text);
        double b2 = Convert.ToDouble(txt_b2.Text);
        
        const double hx = 0.25;
 
        double fxmin = Convert.ToDouble(txt_xmin.Text);
        double fxmax = Convert.ToDouble(txt_xmax.Text);
 
        double[] x = new double[NPoint];
        double[] fx = new double[NPoint];
 
        double MasX;
        double MasF;
 
        int HeightBCont, WidthBCont;
        int HeightVCont, WidthVCont;
        
        double BGX, BGF;
        
        // Формула графика функции
        private double F_X(double X_F)
        {
            return Math.Exp(Math.Sin(a1 * X_F)) - Math.Exp(Math.Cos(b1 * X_F));
        }
 
        private double F_X2(double X_F2)
        {
            return Math.Exp(Math.Sin(a1 * X_F2)) - Math.Exp(Math.Cos(b2 * X_F2));
        }
 
        private double F_X3(double X_F3)
        {
            return Math.Exp(Math.Sin(a2 * X_F3)) - Math.Exp(Math.Cos(b1 * X_F3));
        }
 
        private double F_X4(double X_F4)
        {
            return Math.Exp(Math.Sin(a2 * X_F4)) - Math.Exp(Math.Cos(b2 * X_F4));
        }
                
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
                        
        }
 
        // Кнопка "График"
        private void graph_btn_Click(object sender, EventArgs e)
        {
            Graphics g = pb.CreateGraphics();
            g.Clear(Color.White);
            HeightBCont = pb.Height;
            WidthBCont = pb.Width;
            HeightVCont = HeightBCont / (Ngr / 2) - 100;
            WidthVCont = WidthBCont / (Ngr / 2) - 100;
            MasX = WidthVCont / (xmax - xmin);
            fx[0] = F_X(xmin);
 
            for (int i = 0; i < NPoint; i++)
            {
                x[i] = xmin + i * hx;
            }
 
            // Задаем начальные значения
            fxmax = fx[0]; fxmin = fx[0];
 
            // Производим поиск минимальных и максимальных значений
            for (int i = 0; i < NPoint; i++)
            {
                if (fx[i] > fxmax) fxmax = fx[i];
                if (fx[i] < fxmin) fxmin = fx[i];
            }
 
            // Расчетаем масштабы
            MasF = HeightVCont / (fxmax - fxmin);
 
            // Строим прямоугольники виртуальных контекстов
            BGX = 50;
            BGF = 50;
 
            Pen blackPen = new Pen(Color.Black, 1);
 
            g.DrawRectangle(blackPen, (float)BGX, (float)BGF, WidthVCont, HeightVCont);
            
            // Строим сетки на графиках
            int dGX = WidthVCont / 10;
            int dGY = HeightVCont / 10;
 
            Pen gridPen = new Pen(Color.Gray, 1);
            gridPen.DashStyle = DashStyle.Dash;
 
            for (int i = 0; i < 10; i++)
            {
                g.DrawLine(gridPen, (float)(BGX + i * dGX), (float)BGF, (float)(BGX + i * dGX), (float)(BGF + HeightVCont));
                g.DrawLine(gridPen, (float)BGX, (float)(BGF + i * dGY), (float)(WidthVCont + BGX), (float)(BGF + i * dGY));
            }
 
            // Выводим надписи на графиках
            Font myFont = new Font("Tahoma", 10, FontStyle.Bold);
            SolidBrush myBrush = new SolidBrush(Color.Black);
            String myStr;
 
            for (int i = 0; i < 10; i++)
            {
                myStr = String.Format("{0:F}", xmin + i * (xmax - xmin) / 10);
                g.DrawString(myStr, myFont, myBrush, (float)(BGX + i * dGX - 20), (float)(BGF + HeightVCont + 20));
 
                myStr = String.Format("{0:F}", fxmin + i * (fxmax - fxmin) / 10);
                g.DrawString(myStr, myFont, myBrush, 10, (float)(BGF + HeightVCont - dGY * i - 10));
            }
 
            // Строим графики
            Pen fPen = new Pen(Color.Red, 2);
 
            for (int i = 0; i < NPoint - 1; i++)
            {
                g.DrawLine(fPen, (float)(BGX + Math.Abs(x[i] - xmin) * MasX),
                (float)(BGF + HeightVCont - (fx[i] - fxmin) * MasF),
                (float)(BGX + Math.Abs(x[i + 1] - xmin) * MasX),
                (float)(BGF + HeightVCont - (fx[i + 1] - fxmin) * MasF));
            }
 
        }
 
        // Кнопака "График_1"
        private void button1_Click(object sender, EventArgs e)
        {
                   
        }
 
        // Кнопка "График_2"
        private void button2_Click(object sender, EventArgs e)
        {
 
        }
 
        // Кнопка "График_3"
        private void button3_Click(object sender, EventArgs e)
        {
 
        }
 
        // Кнопка "График_4"
        private void button4_Click(object sender, EventArgs e)
        {
 
        }   
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2014, 03:05
Ответы с готовыми решениями:

Инициализатор не может обращаться к не статическому полу или методу объекта
PointF Arr = new PointF // Исходный массив точек { new PointF(10,150), new PointF(5,50), new PointF(150,50), new...

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

Инициализатор поля не может обращаться к нестатическому полю
Привет всем! При инициализации нового поля в классе приходится обращаться к уже существующему полю(инициализированную конструктором)...

22
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
23.05.2014, 19:31
Студворк — интернет-сервис помощи студентам
Zzzeke, zedgraph тебе в помощь , ему задаешь только точки , график строит сам
0
4 / 4 / 0
Регистрация: 21.12.2013
Сообщений: 91
23.05.2014, 20:22  [ТС]
Metall_Version, рад бы, да вот надо именно через Graphics с использованием pictureBox.
0
4 / 4 / 0
Регистрация: 21.12.2013
Сообщений: 91
24.05.2014, 22:18  [ТС]
С построением разобрался, но вот только возникла проблемка с масштабированием, кривая вылазит за границу графика. Может кто подскажет? Код немножко поменялся:

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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
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 System.Drawing.Drawing2D;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        const byte Ngr = 2, NPoint = 100;
                
        double a1, a2, b1, b2, xmin, xmax;
 
        const double hx = 0.25;
        double fxmin;
        double fxmax;
 
        double[] x = new double[NPoint];
        double[] fx = new double[NPoint];
 
        double MasX;
        double MasF;
 
        int HeightBCont, WidthBCont;
        int HeightVCont, WidthVCont;
 
        double BGX, BGF;
        double BGX1, BGF1, BGX2, BGF2, BGX3, BGF3;
 
        // Формулы графиков функций
        private double F_X(double X_F)
        {
            return Math.Exp(Math.Sin(a1 * X_F)) - Math.Exp(Math.Cos(b1 * X_F));
        }
 
        private double F_X2(double X_F2)
        {
            return Math.Exp(Math.Sin(a1 * X_F2)) - Math.Exp(Math.Cos(b2 * X_F2));
        }
 
        private double F_X3(double X_F3)
        {
            return Math.Exp(Math.Sin(a2 * X_F3)) - Math.Exp(Math.Cos(b1 * X_F3));
        }
 
        private double F_X4(double X_F4)
        {
            return Math.Exp(Math.Sin(a2 * X_F4)) - Math.Exp(Math.Cos(b2 * X_F4));
        }        
        
        public Form1()
        {
            InitializeComponent();
        }        
 
        private void Form1_Load(object sender, EventArgs e)
        {
                        
        }
 
        // Кнопка "График"
        private void graph_btn_Click(object sender, EventArgs e)
        {
            a1 = Convert.ToDouble(txt_a1.Text);
            a2 = Convert.ToDouble(txt_a2.Text);
            b1 = Convert.ToDouble(txt_b1.Text);
            b2 = Convert.ToDouble(txt_b2.Text);
 
            xmin = Convert.ToDouble(txt_xmin.Text);
            xmax = Convert.ToDouble(txt_xmax.Text);
 
            Graphics g = pb.CreateGraphics();
            g.Clear(Color.White);
            HeightBCont = pb.Height;
            WidthBCont = pb.Width;
            HeightVCont = HeightBCont / (Ngr / 2) - 100;
            WidthVCont = WidthBCont / (Ngr / 2) - 100;
            MasX = WidthVCont / (xmax - xmin);
            x[0] = xmin;
            fx[0] = F_X(xmin);
 
            for (int i = 0; i < NPoint; i++)
            {
                x[i] = xmin + i * hx;
                fx[i] = F_X(x[i]);
            }
 
            // Задаем начальные значения
            fxmax = fx[0]; fxmin = fx[0];
 
            // Производим поиск минимальных и максимальных значений
            for (int i = 0; i < NPoint; i++)
            {
                if (fx[i] > fxmax) fxmax = fx[i];
                if (fx[i] < fxmin) fxmin = fx[i];
            }
 
            // Расчетаем масштабы
            MasF = HeightVCont / (fxmax - fxmin);
 
            // Строим прямоугольники виртуальных контекстов            
            BGX = 50;
            BGF = 50;
            
            Pen blackPen = new Pen(Color.Black, 1);
 
            g.DrawRectangle(blackPen, (float)BGX, (float)BGF, WidthVCont, HeightVCont);
            
            // Строим сетки на графиках
            int dGX = WidthVCont / 10;
            int dGY = HeightVCont / 10;
 
            Pen gridPen = new Pen(Color.Gray, 1);
            gridPen.DashStyle = DashStyle.Dash;
 
            for (int i = 0; i < 10; i++)
            {
                g.DrawLine(gridPen, (float)(BGX + i * dGX), (float)BGF, (float)(BGX + i * dGX), (float)(BGF + HeightVCont));
                g.DrawLine(gridPen, (float)BGX, (float)(BGF + i * dGY), (float)(WidthVCont + BGX), (float)(BGF + i * dGY));
            }
 
            // Выводим надписи на графиках
            Font myFont = new Font("Courier New", 10, FontStyle.Bold);
            SolidBrush myBrush = new SolidBrush(Color.Black);
            String myStr;
 
            for (int i = 0; i < 10; i++)
            {
                myStr = String.Format("{0:F}", xmin + i * (xmax - xmin) / 10);
                g.DrawString(myStr, myFont, myBrush, (float)(BGX + i * dGX - 20), (float)(BGF + HeightVCont + 20));
 
                myStr = String.Format("{0:F}", fxmin + i * (fxmax - fxmin) / 10);
                g.DrawString(myStr, myFont, myBrush, 10, (float)(BGF + HeightVCont - dGY * i - 10));
            }
 
            // Строим графики
            Pen fPen = new Pen(Color.Red, 2);
 
            for (int i = 0; i < NPoint - 1; i++)
            {
                g.DrawLine(fPen, (float)(BGX + Math.Abs(x[i] - xmin) * MasX),
                (float)(BGF + HeightVCont - (fx[i] - fxmin) * MasF),
                (float)(BGX + Math.Abs(x[i + 1] - xmin) * MasX),
                (float)(BGF + HeightVCont - (fx[i + 1] - fxmin) * MasF));
            }
        }
 
        // Кнопака "График_1"
        private void button1_Click(object sender, EventArgs e)
        {
                   
        }
 
        // Кнопка "График_2"
        private void button2_Click(object sender, EventArgs e)
        {
 
        }
 
        // Кнопка "График_3"
        private void button3_Click(object sender, EventArgs e)
        {
 
        }
 
        // Кнопка "График_4"
        private void button4_Click(object sender, EventArgs e)
        {
 
        }
 
        // Переменная a1
        private void txt_a1_TextChanged(object sender, EventArgs e)
        {           
 
        }
 
        private void txt_a2_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            
        }                       
    }
}
Миниатюры
Инициализатор поля не может обращаться к нестатическому полю, методу или свойству  
Вложения
Тип файла: rar WindowsFormsApplication2.rar (76.6 Кб, 3 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.05.2014, 22:18

Инициализатор поля не может обращаться к нестатическому полю
Ошибка 1 Инициализатор поля не может обращаться к нестатическому полю, методу или свойству &quot;ConsoleApplication1.GlobalP.rand&quot; Вот...

Инициализатор поля не может обращаться к нестатическому полю
Для инициализации некоторого редактора есть такая строчка Scintilla scintilla1 = (Scintilla)wfh.Child; Находясь в public MainWindow()...

Инициализатор поля не может обращаться к нестатическому полю
Код класса class massive { int m, n; public int M { get { return m; } ...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Теория всего 6. Судьба неотвратима?
anaschu 21.07.2026
Математическое доказательство Судьбы: Точка бифуркации в едином тензорном ядре Модели ВсегоСвежее обновление питоновского ядра «Soil Chemistry 2. 0» дало нам неопровержимое математическое. . .
Теория всего 5. ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли
anaschu 21.07.2026
Единое ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли Главная задача «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы» (аттракторов. . .
сукцессия 37. Внедрил дипсик в свой оркестр из ИИ. У него закончилось пространство чата, потому опубликую выводы из его работы здесь
anaschu 21.07.2026
==================================================================== КОНТЕКСТ: Моделирование микоризной сукцессии (AM → ECM) ==================================================================== . . .
сукцессия 36. Делаю прогоны модели около порога бифуркации (превращения эндо микоризы в экто микоризу)
anaschu 21.07.2026
СУКЦЕССИЯ МИКОРИЗ: КАК МАТЕМАТИКА ОБЪЯСНЯЕТ ПОДЗЕМНУЮ ВОЙНУ Мы привыкли думать, что лес — это деревья. А грибы — это то, что мы собираем в корзинку осенью. Но если заглянуть под землю, окажется,. . .
ИИ и человечность
kumehtar 21.07.2026
Забавно, что общаясь с ИИ, я замечаю, насколько он высказывается умно, и насколько верит в людей. Он умеет прощать. Он знает как отвечать не обесценивая опыт других людей, даже если сам не верит. Он. . .
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного. 1. Почему показания термометра заряжены целью? Цель заложена в самом. . .
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru