Всем привет. Шарп изучаю недавно так что выручайте) Есть ситуация. В форме 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 sender, EventArgs 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 sender, EventArgs e) { Form Form1 = new Form1(); Form Form2 = new Form2(); Form1.Show(); this.Close(); } } } теперь самое вкусненькое) так как все таки заставить форму2 при загрузке (самой формы) заполнить ричтекстбокс формы2 тесктом который находится в текстбоксе формы1. тестовый примитивный пример проекта лежит по ссылке http://dump.ru/file/4539450 Помогите, без Вас никак) Спасибо.
NetSter Один из вариантов: Form1: Code: 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: Code: 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(); } }
Во-первых, надо поставить значения свойства Modifers у ричтекстбокса на public, а дальше уже вот так: На первой форме в нужном месте пишем: Code: 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
Да как-то, что ли "не по взрослому" делать public'ом, уж лучше не полениться и геттер сделать, тем более возможно все данные с текстбоксов нужно как-то обработать... "Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете." (С) Стив Макконнелл
Spy++ Вроде тема по теме )))) В общем, очень нужна утилита Spy++ у кого есть скиньте пожалуйста P.S. http://www.microsoft.com/Rus/Msdn/Activ/MSVB/Archive/Mixture/DataTransfer/217a.mspx
у тебя там должен быть файлик Program.cs, в нём происходит запуск твоей первой формы. Предлагаю в классе первой формы сделать публичный метод(или несколько публичных полей), для передачи данных вверх. В Program.cs ты запустишь первую форму, после чего закроешь, получишь данные и передашь их во вторую форму.
Source Тут в сети недавно появился отличный скан интересной книги "Троелсен Э. - Язык программирования С 2008 и платформа. NET 3.5 (4-е изд., 2010)" может почитать основы, чтобы небыло таких вопросов...
Я знаю 3 метода передачи данных между формами: 1) Написать свойство 2) Сделать richtextbox public(самый простой) 3) Создать обьект класса формы И это еще не все методов очень много так что выбор остается за тобой
сегодня в универе на лабе разобрался. сделал таким образом. (пока работает, так и будет, жду критики и предложений по оптимизации и т.д. других способов написания ) Первая форма 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 sender, EventArgs e) { Form2 Form2 = new Form2(); Form2.mess = textBox1.Text; 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 string mess; public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { textBox1.Text = mess; } } } знаю, это примитив. если есть предложения написать все "как лучше" - велком) всем спасибо кто отписался!
а когда вторая форма закроется как ты первую опять покажешь? Я же дал рабочий вариант, неужели не разобрался?
щя гляну, я сутра видел но не было времени посмотреть сорсы. а в универе вроде все заработало, и я не смотрел.