Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Сохранение переменной массива!!!!!!!!???????


Автор: arkonst 11.4.2008, 15:03
Каким образом можно сохранить переменную массива,да и без разницы массив или нет....любую переменную.....которая была создана в одной форме и затем использовать ее в другой форме уже после закрытия создавшей эту переменную форму......
Я это реализовывал путем доступа к переменной таким образом писал в главной форме такую строку

 Form11 frm11 = new Form11();

после этого эта переменная становиться видна в главной форме.....Но при запуске debug почему-то происходит обнуление этой переменной....Каким образом сохранить эту переменную так что-бы она не обнулялась????

Автор: Wizard_Memfis 11.4.2008, 15:23
Эх.....................который уже раз!!!
Вроде 3 за эту неделю только!!!
Вот это специально создавали!!!
http://forum.vingrad.ru/forum/topic-52713.html
http://forum.vingrad.ru/forum/topic-205061.html

Автор: mr.DUDA 11.4.2008, 15:24
Пример: есть форма Form1 (главная форма приложения), и есть форма Form2 (открывается по щелчку кнопки на форме Form1).

Допустим, у Form2 есть поле-массив TheArray. Его значение нужно получить в Form1 после закрытия Form2.

Пишем код в Form1:
Код
using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        Form2 _form2;

        private void button1_Click(object sender, EventArgs e)
        {
            _form2 = new Form2();
            _form2.FormClosed += form2_FormClosed;
            _form2.Show();
        }

        void form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            MessageBox.Show("Ура, форма 2 закрылась. Вот первый элемент массива: " + _form2.TheArray[0].ToString());
        }
    }
}


Код в Form2:
Код
using System;
using System.Windows.Forms;

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

        public int[] TheArray;

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            TheArray = new int[]
            {
                3, 4, 5
            };
        }
    }
}


Идея ясна? Можно также обойтись без _form2, если показывать форму 2 в модальном режиме:
Код
using System;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.ShowDialog();
            MessageBox.Show("Ура, форма 2 закрылась. Вот первый элемент массива: " + form2.TheArray[0].ToString());
        }
    }
}

Автор: arkonst 11.4.2008, 16:48
ВСЕМ БОЛЬШОЕ СПАСИБО...ВСЕ ПОЛУЧИЛОСЬ!.....Тупо передал параметром элемент массива в функцию....Правда так и не понял как обойтись без Form11 frm11 = new Form();   А то на форуме говорят что так не правильно делать???? Но иначе к объектам той формы я не мог обратиться.....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)