6 / 5 / 8
Регистрация: 23.05.2014
Сообщений: 212
1

Передача из одной формы в другую с использованием Класса Глобальных переменных

15.12.2014, 22:28. Показов 1114. Ответов 14
Метки нет (Все метки)

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

Код 1 формы (Main)
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
 
namespace Kursa4
{
    public partial class Main : Form
    {
        public Main()
        {
            InitializeComponent();
        }
 
        public static class Global
        {
            public static FileStream aFile;
            public static StreamWriter StreamWrite;
            public static StreamReader StreamRead;
            public static string Shifr;
            public static string NameSpec;
            public static int Plan;
            public static int kvZav;
            public static int medal;
        }
        public struct dt
        {
            public static string Shifr;
            public static string NameSpec;
            public static int Plan;
            public static int kvZav;
            public static int madal;
        }
 
 
        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void справкаToolStripMenuItem_Click(object sender, EventArgs e)
        {
            About fr2 = new About();
            fr2.ShowDialog();
        }
 
        private void просмотрToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Viev fr3 = new Viev();
            fr3.ShowDialog();
           this.Activate();
        }
 
        private void добавлениеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AddInFile fr4 = new AddInFile();
            fr4.ShowDialog();
        }
 
        private void удалениеToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Deleted fr5 = new Deleted();
            fr5.ShowDialog();
        }
 
 
        private void создатьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (System.IO.File.Exists("Abityrient.txt"))
                MessageBox.Show("Файл существует");
            else
            {
                Global.aFile = new FileStream("Abityrient.txt", FileMode.Create);
                Global.StreamWrite = new StreamWriter(Global.aFile);
                Global.StreamWrite.Close();
            }
 
        }
 
    }
 
}
Код 2 формы(Deleted)
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
 
namespace Kursa4
{
    public partial class Deleted : Form
    {
        public Deleted()
        {
            InitializeComponent();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            int nd = 0;
            string lin = "";
            Main.dt[] dats = new Main.dt[20];
            char[] separator = new char[] { ',' };
            Main.Global.aFile = new FileStream("Abityrient.txt", FileMode.Open);
            Main.Global.StreamRead = new StreamReader(Main.Global.aFile);
            while (!Main.Global.StreamRead.EndOfStream)
            {
                lin = Main.Global.StreamRead.ReadLine();
                string[] slov = lin.Split(separator);
                dats[nd].NameSpec = Convert.ToInt32(slov[1]);
                dats[nd].Plan = Convert.ToBoolean(slov[2]);
                dats[nd].Main.Global.Shifr = slov[0];
                nd++;
            }
            Main.Global.StreamRead.Close();
            if (nd < Convert.ToInt32(maskedTextBox1.Text))
                MessageBox.Show("Нет записи");
            else
            {
                Main.Global.aFile = new FileStream("Abityrient.txt", FileMode.Create);
                Main.Global.StreamWrite = new StreamWriter(Main.Global.aFile);
                for (int i = 0; i < nd; i++)
                {
                    if ((i + 1) != Convert.ToInt32(maskedTextBox1.Text))
                    {
                        Main.Global.Shifr = dats[i].Global.Shifr;
                        Main.Global.NameSpec = dats[i].nemaSpec;
                        Main.Global.Plan = dats[i].Plan;
                        Main.Global.StreamWrite.WriteLine("{0},{1},{2}",
                            Main.Global.Shifr, Main.Global.NameSpec, Main.Global.Plan);
                    }
                }
                Main.Global.StreamWrite.Close();
            }
 
        }
 
 
        
    }
}
Ошибка в следующих строках формы 2:
C#
1
2
3
dats[nd].NameSpec = Convert.ToInt32(slov[1]);
                dats[nd].Plan = Convert.ToBoolean(slov[2]);
                dats[nd].Main.Global.Shifr = slov[0];
C#
1
2
3
Main.Global.Shifr = dats[i].Global.Shifr;
                        Main.Global.NameSpec = dats[i].nemaSpec;
                        Main.Global.Plan = dats[i].Plan;
Подскажите как исправить без изменения типа передачи.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2014, 22:28
Ответы с готовыми решениями:

Передача переменных из одной формы в другую
Знаю, тема избитая, но прочтение статьи &quot;7 самых частых вопросов...&quot; и множества подобных не дало...

Передача значений переменных из одной формы в другую
Извините, но я недавно начал осваивать Builder 5. Неодходимо передать значения 4-х переменный...

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

Передача переменных из одной функции в другую
Здравствуйте. Занялся прокладыванием маршрута на яндекс-картах, суть следующая. Пользователь вводит...

14
548 / 479 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
16.12.2014, 00:15 2
Чтобы из формы1 передать данные в форму2, например, в текстбокс, леибл. то в этих объектах
нужно изменить свойство private на public. При этом код передачи занимает 4-5 строк
1
6 / 5 / 8
Регистрация: 23.05.2014
Сообщений: 212
16.12.2014, 00:28  [ТС] 3
Цитата Сообщение от zna926 Посмотреть сообщение
Чтобы из формы1 передать данные в форму2, например, в текстбокс, леибл. то в этих объектах
нужно изменить свойство private на public. При этом код передачи занимает 4-5 строк
Так а у меня вроде бы public везде стоит где нужно.
0
548 / 479 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
16.12.2014, 00:43 4
Напишите что передать и куда, я напишу код
1
6 / 5 / 8
Регистрация: 23.05.2014
Сообщений: 212
16.12.2014, 00:49  [ТС] 5
Цитата Сообщение от zna926 Посмотреть сообщение
Напишите что передать и куда, я напишу код
хорошо.

В 1 форме описаны структура и глобальные переменные. Они используются в других формах и все данные заносятся в файл.

В файле полностью проект.
Вложения
Тип файла: rar Kursa4.rar (93.1 Кб, 5 просмотров)
0
insite2012
16.12.2014, 01:09
  #6

Не по теме:

Цитата Сообщение от CovCek Посмотреть сообщение
глобальные переменные.
Нет таких в Шарпе. Просто нет, и все тут. :) Есть переменные уровня класса и уровня метода. А вот глобальных нет.

0
548 / 479 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
16.12.2014, 01:11 7
Я пишу код и тогда сами посмотрите, куда его пристроить

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
Forms Code
{
 
       private void button1_Click(object sender, EventArgs e)
       {
         String s ="asdfgvhb";
          Form2 f2 = new Form2();
           f2.TextBox1.Text = s; // передача строки из формы1 в текстбокс формы2
            f2.Show();
this.Hide();
       }
 
}
1
6 / 5 / 8
Регистрация: 23.05.2014
Сообщений: 212
16.12.2014, 01:17  [ТС] 8
Цитата Сообщение от insite2012 Посмотреть сообщение
Нет таких в Шарпе. Просто нет, и все тут. Есть переменные уровня класса и уровня метода. А вот глобальных нет.
Ага хорошо, перепутал чуток.

Добавлено через 2 минуты
Цитата Сообщение от zna926 Посмотреть сообщение
Я пишу код и тогда сами посмотрите, куда его пристроить
Мне не то чуток нужно.

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

Или я чего то не понимаю?
0
548 / 479 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
16.12.2014, 01:29 9
К сожалению, не все понимаю, зачем нужна структура и как ее использовать
0
6 / 5 / 8
Регистрация: 23.05.2014
Сообщений: 212
16.12.2014, 01:33  [ТС] 10
Цитата Сообщение от zna926 Посмотреть сообщение
К сожалению, не все понимаю, зачем нужна структура и как ее использовать
отвечаю по методичке препода

В файле Form1.cs кроме класса Form1 создадим глобальный класс Global для хранения переменных, используемых во всех формах, и структуру для хранения всех полей записи файла
сам я того же мнения что и вы. Ничерта не понятно
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
16.12.2014, 01:58 11
Цитата Сообщение от CovCek Посмотреть сообщение
создадим глобальный класс Global
Наверное, он так называет public static классы.
1
6 / 5 / 8
Регистрация: 23.05.2014
Сообщений: 212
16.12.2014, 02:11  [ТС] 12
Цитата Сообщение от insite2012 Посмотреть сообщение
Наверное, он так называет public static классы.
Я хз что он как называет, накатал с инета методичку и балду пинает на парах. А мне теперь разбираться.
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
16.12.2014, 02:14 13
Цитата Сообщение от CovCek Посмотреть сообщение
накатал с инета методичку
А можно на текст этой методички взглянуть? Любопытно...
1
6 / 5 / 8
Регистрация: 23.05.2014
Сообщений: 212
16.12.2014, 02:21  [ТС] 14
Цитата Сообщение от insite2012 Посмотреть сообщение
А можно на текст этой методички взглянуть? Любопытно...
Только если вы не мой препод
Вложения
Тип файла: rar Metodichka_po_kursovomu_proektunew.rar (158.6 Кб, 4 просмотров)
0
6 / 5 / 8
Регистрация: 23.05.2014
Сообщений: 212
16.12.2014, 12:56  [ТС] 15
Решил проблему, перенеся объявление класса глобал и структуры в конец файла и убрав в объявлении переменных в структуре статик.
0
16.12.2014, 12:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2014, 12:56
Помогаю со студенческими работами здесь

Передача переменных из одной функции в другую
Друзья подскажите как передать вариеблы из одной функции в другую Пример function test ($var1,...

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

Импорт переменных из одной формы в другую
Добрый вечер, объясните пожалуйста, возможно ли передавать переменные между формами и если да, то...

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


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

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

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