Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.91
dzjundzja88
263 / 208 / 33
Регистрация: 09.02.2011
Сообщений: 435
#1

Как передать ссылку на экземпляр класса с одной формы на другую - C#/.NET 3.x

16.02.2011, 14:19. Просмотров 5097. Ответов 11
Метки нет (Все метки)

Как передать ссылку на экземпляр класса с одной формы на другую?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2011, 14:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос .NET 3.x Как передать ссылку на экземпляр класса с одной формы на другую (C#):

Как передать данные из одной формы в другую
нужно передать текст из richtextbox в новую форму,всё это при нажатии на...

Как передать Dictionary с одной формы на другую?
Доброго времени суток товарищи! Что-то никак не разберусь как можно передать...

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

Как передать значение переменной из одной формы в другую
Здравствуйте! Подскажите, пожалуйста: string h = this.textBox1.text; другая...

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

Передать данные из одной формы в другую
Надо передать данные из одной формы в другую.Использую свойство "родитель" и...

11
tasty_sock
132 / 130 / 21
Регистрация: 26.01.2010
Сообщений: 350
16.02.2011, 14:52 #2
Переопределить конструктор формы, указав в качестве аргумента класс, который ты хочешь передавать.

Пример:
C#
1
2
3
4
5
6
7
        Form1 frm
        public Form2(Form1 _frm)
        {
            InitializeComponent();
 
            frm = _frm; // Теперь можно обращаться к public полям первой формы
        }
Для создания второй формы из первой:
C#
1
2
Form2 frm2 = new Form2(this); // В качестве аргумента передаём ссылку на текущую форму
frm2.Show();
Вместо this можешь указать экземпляр класса, который хочешь передать. Не забудь поправить конструктор второй формы.
1
dzjundzja88
263 / 208 / 33
Регистрация: 09.02.2011
Сообщений: 435
16.02.2011, 15:58  [ТС] #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
namespace ixvMyCabinet
{
    public partial class newCertificateForm: Form
    {
//-------------------Открываем форму addParentCertificateForm
        private void add_parentSertif_Click(object sender, EventArgs e)
        {
        TParentCertCollection Pcertcol = new TParentCertCollection(); 
        addParentCertificateForm c = new addParentCertificateForm();
        c.ShowDialog();
        }
    }
}
 
namespace ixvMyCabinet
{
    public partial class addParentCertificateForm : Form
    {
    
        TParentCert Pcert = new TParentCert();
        
        public addParentCertificateForm()
        {}
    }
}
Нужно передать ссылку на Pcertcol из newCertificateForm в addParentCertificateForm
0
Sergei
1446 / 713 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
16.02.2011, 21:21 #4
Можно использовать public свойство
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
namespace ixvMyCabinet
{
    public partial class newCertificateForm: Form
    {
//-------------------Открываем форму addParentCertificateForm
        private void add_parentSertif_Click(object sender, EventArgs e)
        {
        TParentCertCollection Pcertcol = new TParentCertCollection(); 
        addParentCertificateForm c = new addParentCertificateForm();
        c.PCertCol = Pcertcol;
        c.ShowDialog();
        }
    }
}
 
namespace ixvMyCabinet
{
    public partial class addParentCertificateForm : Form
    {
        public  TParentCertCollection PCertCol {get;set;}   
        TParentCert Pcert = new TParentCert();
        
        public addParentCertificateForm()
        {}
    }
}
1
GOID
83 / 83 / 14
Регистрация: 15.02.2011
Сообщений: 252
16.02.2011, 21:28 #5
Цитата Сообщение от dzjundzja88 Посмотреть сообщение
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
namespace ixvMyCabinet
{
    public partial class newCertificateForm: Form
    {
//-------------------Открываем форму addParentCertificateForm
        private void add_parentSertif_Click(object sender, EventArgs e)
        {
        TParentCertCollection Pcertcol = new TParentCertCollection(); 
        addParentCertificateForm c = new addParentCertificateForm();
        c.ShowDialog();
        }
    }
}
 
namespace ixvMyCabinet
{
    public partial class addParentCertificateForm : Form
    {
    
        TParentCert Pcert = new TParentCert();
        
        public addParentCertificateForm()
        {}
    }
}
Нужно передать ссылку на Pcertcol из newCertificateForm в addParentCertificateForm

C#
1
addParentCertificateForm c = new addParentCertificateForm(ref Pcertcol );
В констукторе:

C#
1
public addParentCertificateForm(ref Pcertcol) {}
0
dzjundzja88
263 / 208 / 33
Регистрация: 09.02.2011
Сообщений: 435
17.02.2011, 14:27  [ТС] #6
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace TestForm
{
    public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Btn_PC_Click(object sender, EventArgs e)
        {
            TParentCertCollection Tpcc = new TParentCertCollection();
            addParentCertificateForm pc = new addParentCertificateForm(Tpcc);
            pc.Show();
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace TestForm
{
    public partial class addParentCertificateForm : Form
    {
 
        TParentCert Pcert = new TParentCert();
        TParentCertCollection PerCertCol = new TParentCertCollection();
 
        public addParentCertificateForm(TParentCertCollection _PerCertCol)
        {
            InitializeComponent();
             PerCertCol = _PerCertCol;
        }
    }
}
Не передаётся в качестве параметра экземпляр класса TParentCertCollection из Form1 в addParentCertificateForm. Уже не знаю что делать. Выдает ошибку:

Error 1 Inconsistent accessibility: parameter type 'TestForm.TParentCertCollection' is less accessible than method 'TestForm.addParentCertificateForm.addParentCertificateForm(TestForm.TParentCertCollection)' D:\Університет\Work\Test\TestForm\TestForm\addParentCertificateForm.cs 19 16 TestForm
 Комментарий модератора 
Хватит создавать дубли тем.
0
nio
5949 / 3355 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
17.02.2011, 17:07 #7
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace TestForm
{
    public partial class addParentCertificateForm : Form
    {
 
        TParentCert Pcert = new TParentCert();
        TParentCertCollection PerCertCol = new TParentCertCollection();
 
        public addParentCertificateForm(object _PerCertCol)
        {
            InitializeComponent();
             PerCertCol = (TParentCertCollection)_PerCertCol;
        }
    }
}
0
dzjundzja88
263 / 208 / 33
Регистрация: 09.02.2011
Сообщений: 435
17.02.2011, 18:15  [ТС] #8
Передали мы экземпляр в addParentCertificateForm там сделали какие-то операции и как теперь после закрытия формы addParentCertificateForm этот же экземпляр передать назад в Form1? Или я уже что-то сильно накрутил?

Добавлено через 8 минут
Вернее в addParentCertificateForm нажно передать ссылку на Tpcc, чтобы все время работать с одним экземпляром класса.
0
GOID
83 / 83 / 14
Регистрация: 15.02.2011
Сообщений: 252
17.02.2011, 18:31 #9
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
namespace TestForm
{
    public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Btn_PC_Click(object sender, EventArgs e)
        {
            TParentCertCollection Tpcc = new TParentCertCollection();
            addParentCertificateForm pc = new addParentCertificateForm(ref Tpcc);
            pc.Show();
        }
    }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace TestForm
{
    public partial class addParentCertificateForm : Form
    {
 
        TParentCert Pcert = new TParentCert();
        TParentCertCollection PerCertCol = new TParentCertCollection();
 
        public addParentCertificateForm(ref TParentCertCollection _PerCertCol)
        {
            InitializeComponent();
             PerCertCol = _PerCertCol;
        }
    }
}
ref устанавливает двухстороннюю связь. Есть еще out
0
nio
5949 / 3355 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
17.02.2011, 18:31 #10
Цитата Сообщение от dzjundzja88 Посмотреть сообщение
Или я уже что-то сильно накрутил?
Именно. При показанном мной подходе ты уже меняешь данные на первой форме (во второй форме ты получаешь не копию родительской формы, а ссылку на нее). Передавать назад нет смысла.
1
dzjundzja88
263 / 208 / 33
Регистрация: 09.02.2011
Сообщений: 435
17.02.2011, 18:45  [ТС] #11
nio, Спасибо, я понял, то что ты предложил и теперь в запасе имею ещё один способ как справиться с такими ситуациями. Я исправил свой начальный вариант. Исправил модификатор класса TParentCertCollection на public и всё заработало. Спасибо, ещё раз, что помогаете новичкам!
0
jjohndavis
0 / 0 / 2
Регистрация: 10.10.2011
Сообщений: 16
16.04.2012, 13:04 #12
А как передать ссылку экземпляра класса другому методу?
К примеру из одной кнопки в другую?:
C#
1
2
3
4
5
6
7
8
private void button1_Click(object sender, EventArgs e)
        {
           tss NewOb = new tss();
        }
private void button2_Click(object sender, EventArgs e)
        {
            Save(NewOb); //сюда нужно передать.
        }
0
16.04.2012, 13:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2012, 13:04
Привет! Вот еще темы с решениями:

Как происходит перемешивание элементов последовательности, если передать в orderby экземпляр класса random?
var rnd = new Random(); var b = a.OrderBy(i => rnd.Next()); Видел в...

Как получить искомый экземпляр класса одной поисковой строкой LINQа
Здравствуйте, Вопрос по LINQ Скажем есть класс Person и есть список этих...

Как передать ссылку на переменную в конструктор класса?
Нужно в класс передать ссылку на переменные f1 и f2, как бы привязать их к...

Получить ссылку на экземпляр класса
Всем доброго времени суток!!! Есть вот такие два класса. Class1 { }...


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

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

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