Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
3 / 3 / 0
Регистрация: 19.08.2011
Сообщений: 69
1

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

08.03.2012, 23:22. Показов 1080. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот код

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
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;
 
namespace Forma
{
    public partial class Form2 : Form
    {
       
        public Form2()
        {
            InitializeComponent();
            
 
            if (EdAdd.p == false)
            {
                Form1 form1 = this.Owner as Form1;
                textBox1.Text = form1.textBox1.Text;
                textBox2.Text = form1.textBox2.Text;
                textBox3.Text = form1.textBox3.Text;
            }
            
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Form1 form1 = this.Owner as Form1;
            form1.textBox1.Text = textBox1.Text;
            form1.textBox2.Text = textBox2.Text;
            form1.textBox3.Text = textBox3.Text;
            Close();
        }
    }
}
Здесь form1 в первом случае имеет значение null, а во втором нормально заполняется данными из Form1

Почему так??? и как можно убрать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2012, 23:22
Ответы с готовыми решениями:

Почему класс не инициализируется в другой функции, ссылка всегда null
Считываю файл построчно, первое значение line - "StoreAgent", значит в дебаге программа должна...

Материнка AsRock N68C-GS FX в ней 2 слота памяти ddr2 и ddr3 память ddr2 видится а 3 не видится Почему
Материнка AsRock N68C-GS FX, в материнке 2 слота памяти ddr2 и ddr3 - гибридная! максимальный...

Почему не видится u при вычислении степени?
Что не так?Почему он не видит u?

Одна форма поверх другой
Доброво времени суток уважаемые программисты, вот у меня какой вопрос: сделал приложение из двух...

8
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
09.03.2012, 00:25 2
А вы посмотрите внимательнее на код формы Form1 - в том месте, где создается Form2 и все станет понятно.
0
3 / 3 / 0
Регистрация: 19.08.2011
Сообщений: 69
09.03.2012, 00:30  [ТС] 3
Я посмотрел внимательно

вот он

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
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;
 
namespace Forma
{
    public partial class Form1 : Form
    {
        Staff[] Workers = new Staff[0];
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            EdAdd.p = true;
            Form2 form2 = new Form2();
            form2.Owner = this;
            form2.ShowDialog();
            Staff Worker = new Staff();
            Worker.Name = (string)textBox1.Text;
            Worker.Job = (string)textBox2.Text;
            Worker.Salary = (string)textBox3.Text;
            Staff.AddOne(ref Workers, Worker);
            listBox1.Items.Add(Workers[Workers.Length - 1].Name);
            int index = listBox1.FindString(Worker.Name);
            listBox1.SetSelected(index, true);
         
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItem != null)
            {
                EdAdd.p = false;
                string s = (string)listBox1.SelectedItem;
                Form2 form2 = new Form2();
                form2.Owner = this;
                form2.ShowDialog();
                Staff Worker = new Staff();
                Worker.Name = (string)textBox1.Text;
                Worker.Job = (string)textBox2.Text;
                Worker.Salary = (string)textBox3.Text;
                Staff.Edit(ref Workers, s, Worker);
                /*int index = listBox1.FindString(s);
                listBox1.SetSelected(index, true);
                listBox1.Items[listBox1.SelectedIndex].Value = Worker.Name;*/
                listBox1.Items.Remove(s);
                listBox1.Items.Add(Worker.Name);
                int index = listBox1.FindString(Worker.Name);
                listBox1.SetSelected(index, true);
         
            }
            else MessageBox.Show("Нечего редактировать!");
            
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItem!=null)
            {
                string Deleted;
                Deleted = (string)listBox1.SelectedItem;
                listBox1.Items.Remove(Deleted);
                Staff.DeleteOne(ref Workers, Deleted);
                textBox1.Text = "";
                textBox2.Text = "";
                textBox3.Text = "";
            }
            else MessageBox.Show("Нечего удалять!");
        }
 
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            int i;
            bool p=false;
            for (i = 0; p == false; i++)
сейчас скажу в каких строках form2 сохдаётся

Добавлено через 1 минуту
в строках 25,26,27
и в строках 45,6,47
в обоих случаях во второй форме работает что работает и не раотает что и не работало
0
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
09.03.2012, 00:31 4
Посмотрите внимательнее на строчки 25 и 45. Чему на момент создания Form2 равно значение ее свойства Owner?
0
3 / 3 / 0
Регистрация: 19.08.2011
Сообщений: 69
09.03.2012, 00:44  [ТС] 5
this
а что?
0
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
09.03.2012, 03:05 6
this оно равно уже на 26-й строчке, а на 25-й, в момент создания объекта и вызова конструктора, оно равно ничему.
0
3 / 3 / 0
Регистрация: 19.08.2011
Сообщений: 69
09.03.2012, 10:24  [ТС] 7
ну так я же сразу же потом уже делаю его равным чему-то
0
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
09.03.2012, 12:40 8
Я смотрю, вы немножко плаваете в теме создания объектов и вызова методов.
Поясню:
На 25-й строчке вы создаете экземпляр класса Form2 через оператор new.
В этот момент запускается конструктор класса Form2 и пока он полностью не отработает, код в классе Form1 не переходит на новую строчку, то есть вы пытаетесь использовать свойство Owner еще до того как оно присвоено.
1
3 / 3 / 0
Регистрация: 19.08.2011
Сообщений: 69
09.03.2012, 16:14  [ТС] 9
kolorotur, плаваю это мягко сказано
но теперь я понял в чём дело)) Спасибо!)
0
09.03.2012, 16:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.03.2012, 16:14
Помогаю со студенческими работами здесь

Одна форма над другой
Надо одну форму расположить под другой: Form2.Top := Form1.Height;Но получается вот так (см....

Почему одна форма не видит другую?
Собственно faq "как создать вторую форму" читал, главная форма не видит другие, хотя они её видят,...

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

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


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

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