Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы / 17 сообщений из 17, страница 1 из 1
16.04.2013, 12:23
    #38227384
greshnik_05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
День добрый!!!
Имею 2 формы
Форма1
Код: 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.
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;
using System.Xml.Serialization;

namespace TestTransferDataForm1ToForm2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            xmlConstant.Constants = consts;
        }

        public ArrayofConstant xmlConstant = new ArrayofConstant();
        public List<Constant> consts = new List<Constant>();
        
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.Show();
        }


        /// <summary>
        /// Класс для работы с массивом констант
        /// </summary>
        public class ArrayofConstant
        {
            public List<Constant> Constants { get; set; }

        }

        /// <summary>
        /// Класс содержащий поля констант
        /// </summary>
        public class Constant
        {
            public string Name { get; set; }
            public string Value { get; set; }
        }
   }
}



Форма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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
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.Xml.Serialization;
using System.IO;

namespace TestTransferDataForm1ToForm2
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        Form1 form1 = new Form1();

        private void button1_Click(object sender, EventArgs e)
        {
            if (tb_Name.TextLength != 0 && tb_Value.TextLength != 0)
            {
                Form1.Constant objConst = new Form1.Constant();
                objConst.Name = tb_Name.Text;
                objConst.Value = tb_Value.Text;
                form1.xmlConstant.Constants.Add(objConst);

                using (StreamWriter StreamWriterXmlFile = new StreamWriter("constant.xml"))
                {
                    XmlSerializer serializer = new XmlSerializer(form1.xmlConstant.GetType());
                    serializer.Serialize(StreamWriterXmlFile, form1.xmlConstant);
                } 
                

                this.Close();
            }
        }
    }
}



Код: c#
1.
form1.xmlConstant.Constants.Add(objConst);

вот здесь вот не происходит накопления данных. При закрытии Форм2 данные пропадают. Как сделать так чтоб они сохранялись после закрытия Форм2.
...
Рейтинг: 0 / 0
16.04.2013, 12:34
    #38227415
greshnik_05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
PS. Это подзадача одной задачи.
В общем дело обстоит так.
Имеется Форм1 на нем:
1. datagridview в который загружаются данные из Xml - файла.
2. 3 кнопки Добавить Изменить и Удалить.

В данном примере я хочу реализовать задачу добавления данных.

И еще вопрос: как правильно сделать так чтоб к переменной xmlConstant(на ФОРМ1), имелся доступ из дочерних форм.(т.е форма для добавления удаления и редактирования). Ну и из других форм тоже.

Надеюсь правильно изложил свою мысль!!! Думаю вы мне поможите)))
...
Рейтинг: 0 / 0
16.04.2013, 14:01
    #38227571
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
greshnik_05
Код: c#
1.
form1.xmlConstant.Constants.Add(objConst);


вот здесь вот не происходит накопления данных. При закрытии Форм2 данные пропадают. Как сделать так чтоб они сохранялись после закрытия Форм2.

данные сохраняются в новом экземпляре Form1 form1 = new Form1();
а нужно передавать ссылку на существую форму:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public partial class Form1 : Form
{
  private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.Form1 = this;
            form2.Show();
        }
}

public partial class Form2 : Form
{
	public Form1 Form1 {get;set;}
}



тема обсуждалась 100500 раз
...
Рейтинг: 0 / 0
16.04.2013, 14:19
    #38227613
greshnik_05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
Благодарствую помогло!!!
pation тема обсуждалась 100500 раз
Ну извините я на форумах не живу )))
...
Рейтинг: 0 / 0
16.04.2013, 15:04
    #38227702
greshnik_05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
А как уведомить Форм1 о том что Форм2 закрыли. Что бы перезагрузить datagridview на Форм1?
...
Рейтинг: 0 / 0
16.04.2013, 16:07
    #38227808
sld
sld
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
у форм2 прицепить событие закрытие формы
Form2.FormClosed+=
...
Рейтинг: 0 / 0
16.04.2013, 16:11
    #38227815
greshnik_05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
не совсем понял.sldForm2.FormClosed+=
а после равно что??? можно по конкретнее пример
...
Рейтинг: 0 / 0
16.04.2013, 16:18
    #38227826
sld
sld
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
когда += ручками вводишь тебе вроде должно предложить создать.
...
Рейтинг: 0 / 0
16.04.2013, 16:24
    #38227840
greshnik_05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
ни чего такого не происходит. И еще прицепив к форм2 событие закрытия формы, как это повлияет на форм1???
и куда писать кусок кода который ты дал? если в форм2 то не срабатывает то о чем ты сказал ни чего не выводит
...
Рейтинг: 0 / 0
16.04.2013, 17:11
    #38227936
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
greshnik_05ни чего такого не происходит. И еще прицепив к форм2 событие закрытия формы, как это повлияет на форм1???
и куда писать кусок кода который ты дал? если в форм2 то не срабатывает то о чем ты сказал ни чего не выводит
greshnik_05Ну извините я на форумах не живу )))

может стоит на форумах пожить?
...
Рейтинг: 0 / 0
16.04.2013, 17:25
    #38227963
greshnik_05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
лучше помоги разобраться с проблемой
...
Рейтинг: 0 / 0
16.04.2013, 18:00
    #38228015
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
Думается мне, что вместо form2.Show() следует использовать form2.ShowDialog() .
...
Рейтинг: 0 / 0
16.04.2013, 18:23
    #38228044
Где-то в степи
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
skyANAДумается мне, что вместо form2.Show() следует использовать form2.ShowDialog() .
"Ну вот пришёл и все испортил" (с)
Из анекдота про Ржевского, портрет Николая 2, лягушку, бильярдный стол, бильярдный шар и голую бабу..
...
Рейтинг: 0 / 0
16.04.2013, 18:30
    #38228054
greshnik_05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
skyANAДумается мне, что вместо form2.Show() следует использовать form2.ShowDialog() .
и с form2.Show() и с form2.ShowDialog() работает. Я использую form2.ShowDialog()
...
Рейтинг: 0 / 0
16.04.2013, 21:25
    #38228220
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
greshnik_05ни чего такого не происходит. И еще прицепив к форм2 событие закрытия формы, как это повлияет на форм1???

2 варианта:
1.Храни ссылку на форм1 в объекте форм2, и на событии Closed делай с форм1 что хочешь.
2.Вызывай форм2 методом ShodDialog и в следующей строчке программы делай свою обновление (более правильный метод)
...
Рейтинг: 0 / 0
17.04.2013, 11:06
    #38228700
greshnik_05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
Решил дело таким образом
В Форм1 при нажатии на кнопку для вызове Форм2 сделал так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
private void btnAddConst_Click(object sender, EventArgs e)
        {
            formAddConstant frmAddConstant = new formAddConstant();
            frmAddConstant.frmConstants = this;
            frmAddConstant.FormClosed += new FormClosedEventHandler(frmAddConstant_FormClosed);
            frmAddConstant.ShowDialog();
        }
 void frmAddConstant_FormClosed(object sender, FormClosedEventArgs e)
       {
           this.Refresh(); 
       }


Событие закрытии Форм2, Форм1 отлавливает без проблем. Но после this.Refresh(); добавленные данные не появляются.
datagridview1.Refresh() тоже не помогает.

Данные в датагрид из XML файла гружу таким образом

Код: c#
1.
2.
3.
4.
5.
6.
7.
string filePath = "constant.xml";
                ConstantDataSet.ReadXml(filePath);

                dataGridView1.DataSource = ConstantDataSet;
                dataGridView1.DataMember = "constant";
                dataGridView1.Columns["Name"].HeaderText = "Наименование";
                dataGridView1.Columns["Value"].HeaderText = "Значение";



Можно конечно очистить датагрид таким образом
Код: c#
1.
2.
3.
4.
5.
6.
public void Clear(DataGridView dataGridView)
        {
            while(dataGridView.Rows.Count > 1)
                for (int i = 0; i < dataGridView.Rows.Count-1; i++)
                    dataGridView.Rows.Remove(dataGridView.Rows[i]);
        }


Вызвать функцию где надо, а после очищения опять вставить вышеописанный код для загрузки данных из XML файла.
На мой взгляд всё это как то коряво. Может есть способ получше и элегантнее)))
...
Рейтинг: 0 / 0
17.04.2013, 11:14
    #38228721
greshnik_05
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы
Ах да еще есть такая вот переменная xmlConstant. в ней хранится всё тоже самое что и в датагриде.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
/// <summary>
        /// Класс для работы с массивом констант
        /// </summary>
        public class ArrayofConstant
        {
            public List<Constant> Constants { get; set; }

        }

        /// <summary>
        /// Класс содержащий поля констант
        /// </summary>
        public class Constant
        {
            public string Name { get; set; }
            public string Value { get; set; }
        }
        /// <summary>
        /// Описание перемeнных
        /// </summary>
        public ArrayofConstant xmlConstant = new ArrayofConstant();
        public List<Constant> consts = new List<Constant>();



Он служит для сериализации\десериализации данных в XML файл
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / При добавлении данных в дочерней форме в List данные не сохраняются при выходе из формы / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]