Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Bezarius
0 / 0 / 0
Регистрация: 17.09.2011
Сообщений: 51
1

Проблема с экземплярами класса

17.09.2011, 15:29. Просмотров 669. Ответов 10
Метки нет (Все метки)

Только начал изучат данный язык, по этому прошу прощения за глупый вопрос. Собственно проблема с экземплярами класса, я видимо что то не так делаю. Если есть у кого то возможность, прошу подсказать.

Место на которое ругается компилятор: FileData[].NewData...

"Ссылка на объект не указывает на экземпляр объекта" но я же его в самом начале объявил, вроде как >_<.

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
public partial class MainForm : Form
    {
        public filedata[] FileData = new filedata[4];
 
        public class filedata
        {
            public string name;
            public string patch;
            public string[] data_array;
 
            public void NewData(string name, string patch, string[] data_array)
            {
                this.name = name;
                this.patch = patch;
                this.data_array = data_array;
            }
        }
 
        public MainForm()
        {
            InitializeComponent();
            FileData[1].NewData("Ранг", "RangData.txt", new string[] { "E", "D", "C", "B", "A", "S" });
            FileData[2].NewData("Клан", "ClanData.txt", new string[] { "Клан1", "Клан2" });
            FileData[3].NewData("Страна", "CountryData.txt", new string[] { "Страна1", "Страна2" });
            for (int i = 0; i < 4; i++)
            {
                if (!File.Exists(FileData[i].patch))
                {
                    File.WriteAllLines(FileData[i].patch, FileData[i].data_array);
                }
            }
        }
PS: буду благодарен если кто то побудет моим наставником. Обещаю задавать вопросы только после того как испробую все идеи=)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2011, 15:29
Ответы с готовыми решениями:

Работа с экземплярами класса
Решение задания никак не доходит, пожалуйста, помогите советом. :help: Имеется...

Работа с экземплярами класса
Здравствуйте, уважаемые форумчане. Мне нужно переписать программу без...

Передача события между разными экземплярами одного класса
Подскажите, как правильнее организовать... Есть 2 сущности одного класса....

При работе с экземплярами класса его списки обнуляются
Здравствуйте! Прошу помощи с решением следующей проблемы. есть класс: ...

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

10
Fredi
Заблокирован
17.09.2011, 16:10 2
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
    public partial class Form1 : Form
    {
        public filedata[] FileData = new filedata[4];
 
        public class filedata
        {
             string name;
             string patch;
             string[] data_array;
 
            public  filedata(string name, string patch, string[] data_array)
            {
                this.name = name;
                this.patch = patch;
                this.data_array = data_array;
            }
        }
        public Form1()
        {
            InitializeComponent();
 
            FileData[1] = new filedata("Ранг", "RangData.txt", new string[] { "E", "D", "C", "B", "A", "S" });
            FileData[2] = new filedata("Клан", "ClanData.txt", new string[] { "Клан1", "Клан2" });
            FileData[3] = new filedata("Страна", "CountryData.txt", new string[] { "Страна1", "Страна2" });
1
Bezarius
0 / 0 / 0
Регистрация: 17.09.2011
Сообщений: 51
17.09.2011, 18:05  [ТС] 3
thx=)

Я решил проблему малость по другому, создал экземпляры класса, ступил вообще >_<

Добавлено через 1 час 50 минут
Следующая проблема:

C#
1
2
MainForm frm = (MainForm)this.Owner;
this.comboBox3.Items.AddRange(frm.FileData[0].data_array);
Студия убеждает что: Ссылка на объект не указывает на экземпляр объекта. Часть в котором создается этот самый объект, указана выше. Код нигде не "подчеркнут", что указывает на то что я верно передал данные(я надеюсь). В чем теперь проблема, подскажите плз=)
0
Fredi
Заблокирован
17.09.2011, 19:11 4
Цитата Сообщение от Bezarius Посмотреть сообщение
В чем теперь проблема, подскажите плз=)
Проблема в отсутствии на форуме экстрасенсов.
0
Bezarius
0 / 0 / 0
Регистрация: 17.09.2011
Сообщений: 51
17.09.2011, 22:34  [ТС] 5
Цитата Сообщение от Fredi Посмотреть сообщение
Проблема в отсутствии на форуме экстрасенсов.
Эм, вся же необходимая инфа представлена, или что то еще нужно?

Добавлено через 3 часа 19 минут
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
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.IO;
 
namespace QuestMaker
{
    public partial class MainForm : Form
    {
        public filedata[] FileData = new filedata[3];
 
        public class filedata
        {
            public string name;
            public string path;
            public string[] data_array;
 
            public filedata(string name, string path, string[] data_array)
            {
                this.name = name;
                this.path = path;
                this.data_array = data_array;
            }
        }
 
        public MainForm()
        {
            InitializeComponent();
            FileData[0] = new filedata("Ранг", "RangData.txt", new string[] { "E", "D", "C", "B", "A", "S" });
            FileData[1] = new filedata("Клан", "ClanData.txt", new string[] { "Клан1", "Клан2" });
            FileData[2] = new filedata("Страна", "CountryData.txt", new string[] { "Страна1", "Страна2" });
            for (int i = 0; i < 3; i++)
            {
                if (!File.Exists(FileData[i].path))
                {
                    File.WriteAllLines(FileData[i].path, FileData[i].data_array);
                }
                FileData[i].data_array = File.ReadAllLines(FileData[i].path);
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Form f = new QuestData();
            f.Owner = this;
            f.Show();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Form f = new CreateNpc();
            f.Owner = this;
            f.Show();
        }
 
        private void рангToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form f = new AddNewData();
            f.Owner = this;
            f.Show();
        }
 
        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
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
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.IO;
 
namespace QuestMaker
{
    public partial class CreateNpc : Form
    {
        public CreateNpc()
        {
            InitializeComponent();
            MainForm frm = (MainForm)this.Owner;
            this.comboBox3.Items.AddRange(frm.FileData[1].data_array);//Ссылка на объект не указывает на экземпляр объекта.
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
 
        }
    }
}
0
Fredi
Заблокирован
17.09.2011, 22:51 6
Делай в событии загрузки формы, потому что когда ты делаешь в конструкторе главная форма равна null
C#
1
2
3
4
5
6
7
8
       private void Form2_Load(object sender, EventArgs e)
        {
            Form1 frm = this.Owner as Form1;
            if (frm != null)
            {
                this.comboBox1.Items.AddRange(frm.FileData[1].data_array);
            }
        }
1
Bezarius
0 / 0 / 0
Регистрация: 17.09.2011
Сообщений: 51
18.09.2011, 22:36  [ТС] 7
Большое спасибо. Помогло=)

Вопрос на счет доступа к данным других форм:

Используя принцип: Form1 frm = this.Owner as Form1;

У меня получается: Form1=>Form2=>Form3=>Form4=>Form5=>Form6=>Form7
Мне нужно передать из формы 7 данные в форму 6, а из формы 6 в форму 5. Т.е. в обратную сторону, к владельцу.

Не возникнет ли проблем если я в напишу так: Form5<=Form6<=Form7??
При этом получится, что форма1 owner форма 2, а форма 2 owner форма1 О_о
0
Fredi
Заблокирован
18.09.2011, 22:56 8
Bezarius, почитай Ответы на 7 самых частых вопросов по WinForms . Там есть варианты другой реализации передачи данных между формами. Но мне кажется ты зря используешь такое большое кол-во форм. ИМХО
1
Bezarius
0 / 0 / 0
Регистрация: 17.09.2011
Сообщений: 51
18.09.2011, 23:04  [ТС] 9
Цитата Сообщение от Fredi Посмотреть сообщение
Bezarius, почитай Ответы на 7 самых частых вопросов по WinForms . Там есть варианты другой реализации передачи данных между формами. Но мне кажется ты зря используешь такое большое кол-во форм. ИМХО

Ту тему конечно же первым делом читал(не имею привычки просить помощь предварительно не сделав самостоятельно все возможное), 2.1-2.4 не хочу использовать(говнокодить), с 2.5 разобрался после вашей подсказки, с 2.6 пока нет.

Бтв, в конечном итоге у меня будет ~20 форм, хотелось бы узнать альтернативный вариант.
0
Fredi
Заблокирован
18.09.2011, 23:44 10
Bezarius, я не совсем представляю, что ты хочешь. Вот набросал небольшой пример. Посмотри... может подойдет
1
Вложения
Тип файла: rar WindowsFormsApplication1.rar (28.2 Кб, 5 просмотров)
Bezarius
0 / 0 / 0
Регистрация: 17.09.2011
Сообщений: 51
18.09.2011, 23:52  [ТС] 11
Спасибо за пример, он оказался очень даже полезным. Идею понял, сейчас попробую реализовать.
0
18.09.2011, 23:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.09.2011, 23:52

Заполнение списка List<T> экземплярами string[]
Добрый день. Читаю данные с SQL-запроса и хочу заполнить список podr...

Проблема с присвоением объектов созданного класса
Задание было таким: решение задачи на оптимизацию симплекс методом....

Проблема при создании отдельного класса с делегатом
Здравствуйте! Суть ошибки в том, что во второй форме Data не определена. Что...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru