Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   [C#] Обмен данными между формами. (https://forum.antichat.xyz/showthread.php?t=198398)

NetSter 22.04.2010 21:28

[C#] Обмен данными между формами.
 
Всем привет.
Шарп изучаю недавно так что выручайте)
Есть ситуация.
В форме 1 посредством разных действий получили информацию, вывели в разные текстбоксы (штук 5, это не особо важно).
Теперь по клику кнопки нужно собрать все данные с текстбоксов, форму 1 спрятать, запустить форму 2, в которой уже есть RichTextBox, в который нужно все данные записать (не по нажатию батона на форм2 а сразу при загрузке формы2).
для примера 2 чистых формы с текстбооксом и батоном.
Код формы1

PHP код:

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 
WindowsFormsApplication1
{
    public 
partial class Form1 Form
    
{
        public 
Form1()
        {
            
InitializeComponent();
        }

        private 
void button1_Click(object senderEventArgs e)
        {
            
Form Form1 = new Form1();
            
Form Form2 = new Form2();
            
this.Hide();
            
Form2.Show();
        }
    }


и вторая форма

PHP код:

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 
WindowsFormsApplication1
{
    public 
partial class Form2 Form
    
{
        public 
Form2()
        {
            
InitializeComponent();
        }

        private 
void button1_Click(object senderEventArgs e)
        {
            
Form Form1 = new Form1();
            
Form Form2 = new Form2();
            
Form1.Show();
            
this.Close();
        }
    }


теперь самое вкусненькое)
так как все таки заставить форму2 при загрузке (самой формы) заполнить ричтекстбокс формы2 тесктом который находится в текстбоксе формы1.
тестовый примитивный пример проекта лежит по ссылке http://dump.ru/file/4539450
Помогите, без Вас никак)
Спасибо.

0kt0ber 22.04.2010 22:16

NetSter
Один из вариантов:
Form1:
Код:

public partial class Form1 : Form
    {
        public Form1()
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2(this);
            this.Hide();
            f2.Show();           
        }

        public string getString()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(textBox1.Text);
            sb.Append(textBox2.Text);
            sb.Append(textBox3.Text);
            sb.Append(textBox4.Text);
            return sb.ToString();           
        }
    }

Form2:
Код:

   
public partial class Form2 : Form
    {
        private Form1 _f1;
        public Form2(Form1 f1)
        {         
            _f1 = f1;
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            richTextBox1.Text = _f1.getString();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            _f1.Show();
            this.Close();
        }
    }


vicgerrard 22.04.2010 22:47

Во-первых, надо поставить значения свойства Modifers у ричтекстбокса на public, а дальше уже вот так:
На первой форме в нужном месте пишем:
Код:

frm2 frm = new frm2();
frm.RichTextBox1.Text += textBox1.Text;
frm.RichTExtBox1.TExt += textBox2.Text;
...
frm.RichTextBox1.Text += textBox100.Text;
frm.ShowDialog(this);
frm.Dispose();

Не забываем добавить в проект форму с именем frm2.cs

0kt0ber 22.04.2010 22:51

Цитата:

Сообщение от vicgerrard
Во-первых, надо поставить значения свойства Modifers у ричтекстбокса на public...

:confused: :confused: :confused:
А во-вторых...???

vicgerrard 22.04.2010 22:55

Цитата:

Сообщение от 0kt0ber
:confused: :confused: :confused:
А во-вторых...???

Это так принципиально ?
Я ведь написал: "Во-первых .... ну а дальше"

0kt0ber 22.04.2010 23:04

Цитата:

Сообщение от vicgerrard
Это так принципиально ?

Да как-то, что ли "не по взрослому" делать public'ом, уж лучше не полениться и геттер сделать, тем более
Цитата:

...
Теперь по клику кнопки нужно собрать все данные с текстбоксов, форму 1 спрятать, запустить форму 2
...
возможно все данные с текстбоксов нужно как-то обработать...


"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете." (С) Стив Макконнелл

vicgerrard 22.04.2010 23:07

Цитата:

Сообщение от 0kt0ber
Да как-то, что ли "не по взрослому" делать public'ом, уж лучше не полениться и геттер сделать, тем более

возможно все данные с текстбоксов нужно как-то обработать...

Мне 14 лет, неделю назад только закончил курс с# (на 5. кстати), говорю, как умею )

ichechen 22.04.2010 23:30

Spy++
 
Вроде тема по теме ))))
В общем, очень нужна утилита Spy++ у кого есть скиньте пожалуйста :)

P.S.
Цитата:

Сообщение от NetSter
Передача данных

http://www.microsoft.com/Rus/Msdn/Activ/MSVB/Archive/Mixture/DataTransfer/217a.mspx

0kt0ber 23.04.2010 00:15

Spy++ от VS2010RC
из папки с установленной студии

scrat 23.04.2010 00:41

у тебя там должен быть файлик Program.cs, в нём происходит запуск твоей первой формы. Предлагаю в классе первой формы сделать публичный метод(или несколько публичных полей), для передачи данных вверх. В Program.cs ты запустишь первую форму, после чего закроешь, получишь данные и передашь их во вторую форму.


Время: 13:00