Отправить значения из одной формы в другую форму
Я хочу передать значения между двумя формами (С#). Как я могу это сделать?
У меня две формы: Form1 и Form2.
Форма 1 содержит одну кнопку. Когда я нажимаю на эту кнопку, Form2 должен открыться, а Form1 должен находиться в неактивном режиме (т.е. Не выбирается).
Форма 2 содержит одно текстовое поле и одну кнопку отправки. Когда я ввожу любое сообщение в текстовое поле Form2 и нажимаю кнопку отправки, Form2 должен закрываться, а Form1 должен выделяться с представленным значением.
Как я могу это сделать? Может ли кто-нибудь помочь мне сделать это с помощью простого примера.
Ответы
Ответ 1
Существует несколько решений, но это шаблон, который я обычно использую.
// Form 1
// inside the button click event
using(Form2 form2 = new Form2())
{
if(form2.ShowDialog() == DialogResult.OK)
{
someControlOnForm1.Text = form2.TheValue;
}
}
А...
// Inside Form2
// Create a public property to serve the value
public string TheValue
{
get { return someTextBoxOnForm2.Text; }
}
Ответ 2
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2(textBox1.Text);
frm2.Show();
}
public Form2(string qs)
{
InitializeComponent();
textBox1.Text = qs;
}
Ответ 3
Определить свойство
public static class ControlID {
public static string TextData { get; set; }
}
В form2
private void button1_Click(object sender, EventArgs e)
{
ControlID.TextData = txtTextData.Text;
}
Получение данных в form1
и form3
private void button1_Click(object sender, EventArgs e)
{
string text= ControlID.TextData;
}
Ответ 4
Объявите общедоступную строку в form1
public string getdata;
В кнопке form1
form2 frm= new form2();
this.hide();
form2.show();
Чтобы отправить данные в form1
, вы можете попробовать любое событие и код, следующие в этом случае
form1 frm= new form1();
form1.getdata="some string to be sent to form1";
Теперь после закрытия form2
и открытия form1
вы можете использовать возвращенные данные в строке getdata
.
Ответ 5
После серии борьбы за передачу данных из одной формы в другую я наконец нашел стабильный ответ. Он работает как прелесть.
Все, что вам нужно сделать, это объявить переменную как public static datatype 'variableName'
в одной форме и присвоить значение этой переменной, которую вы хотите передать в другую форму, и вызвать эту переменную в другой форме, используя непосредственно имя формы (Не создавайте объект этой формы, так как к ним могут обращаться непосредственно статические переменные) и получить доступ к этому значению переменной.
Пример такого,
Form1
public static int quantity;
quantity=TextBox1.text; \\Value which you want to pass
Form2
TextBox2.Text=Form1.quantity;\\ Data will be placed in TextBox2
Ответ 6
объявить строку в form1
public string TextBoxString;
в form1 click event add
private void button1_Click(object sender, EventArgs e)
{
Form1 newform = new Form1();
newform = this;
this.Hide();
MySecform = new Form2(ref newform);
MySecform.Show();
}
в конструкторе form2
public Form2(ref Form1 form1handel)
{
firstformRef = form1handel;
InitializeComponent();
}
в переменной формы form2 Form1 firstformRef;
private void Submitt_Click(object sender, EventArgs e)
{
firstformRef.TextBoxString = textBox1.Text;
this.Close();
firstformRef.Show();
}
Ответ 7
Я работал над различными проектами winform и по мере того, как приложения становятся более сложными (больше диалогов и взаимодействий между ними), тогда я начал использовать некоторую систему событий, чтобы помочь мне, потому что управление открытием и закрытием окон вручную будет трудно поддерживать и развиваться дальше.
Я использовал CAB для своих приложений, у него есть eventing system, но это может быть излишним в вашем случае:) Вы можете написать свои собственные события для более простых приложений
Ответ 8
Код формы 1:
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog();
MessageBox.Show("Form1 Message :"+Form2.t.Text); //can put label also in form 1 to show the value got from form2
}
Код формы 2:
public Form2()
{
InitializeComponent();
t = textBox1; //Initialize with static textbox
}
public static TextBox t=new TextBox(); //make static to get the same value as inserted
private void button1_Click(object sender, EventArgs e)
{
this.Close();
}
Это работает!
Ответ 9
В этом коде вы передаете текст Form2. Form2 показывает этот текст в textBox1.
Пользователь вводит новый текст в textBox1 и нажимает кнопку отправки.
Form1 захватывает этот текст и показывает его в текстовом поле Form1.
public class Form2 : Form
{
private string oldText;
public Form2(string newText):this()
{
oldText = newText;
btnSubmit.DialogResult = DialogResult.OK;
}
private void Form2_Load(object sender, EventArgs e)
{
textBox1.Text = oldText;
}
public string getText()
{
return textBox1.Text;
}
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
DialogResult = System.Windows.Forms.DialogResult.OK;
}
}
}
И это код Form1:
public class Form1:Form
{
using (Form2 dialogForm = new Form2("old text to show in Form2"))
{
DialogResult dr = dialogForm.ShowDialog(this);
if (dr == DialogResult.OK)
{
tbSubmittedText = dialogForm.getText();
}
dialogForm.Close();
}
}
Ответ 10
Как передать значения из формы в другую форму
1.) Перейдите к Form2, затем дважды щелкните по нему. На этом типе кода это.
public Form2(string v)
{
InitializeComponent();
textBox1.Text = v;
}
2.) Перейдите к Form1, затем дважды щелкните по нему. На этом типе кода это.
// На вашей командной кнопке в Form1
private void button1_Click(object sender, EventArgs e)
{
Form2 F2 = new Form2(textBox1.Text);
F2.Show();
}
Ответ 11
вы можете передать в качестве параметра текстовое поле Form1, например:
В обработчике формы 1 формы:
private void button2_Click(object sender, EventArgs e)
{
Form2 newWindow = new Form2(textBoxForReturnValue);
newWindow.Show();
}
На форме 2
public static TextBox textBox2; // class atribute
public Form2(TextBox textBoxForReturnValue)
{
textBox2= textBoxForReturnValue;
}
private void btnClose_Click(object sender, EventArgs e)
{
textBox2.Text = dataGridView1.CurrentCell.Value.ToString().Trim();
this.Close();
}
Ответ 12
Это очень просто.
предположим, что у вас есть 2 оконные формы Form1 и Form2, и вы хотите отправить запись текстового поля 1 из Form1 в Form2 и отобразить эту запись в метке1 формы 2;
затем в Form2 создайте метку, имя которой - label1, и перейдите к свойству label1 и установите "Модификаторы" = public, а в Форме 1 создайте текстовое поле с идентификатором textBox1 и кнопку с именем submit, а затем напишите следующий код при событии нажатия кнопки
button1_Click(object sender, EventArgs e)
{
Form2 obj=new Form2();
obj.label1.text=textBox1.text.ToString();
obj.show();
}
вот оно...
для этого вы можете привязать запись набора данных к другой форме datagridview......
Ответ 13
Конструкторы - это лучшие способы передачи данных между формами или объектами Gui, которые вы можете сделать.
В форме1 нажмите кнопку, которую вы должны иметь:
Form1.Enable = false;
Form2 f = new Form2();
f.ShowDialog();
В форме 2, когда пользователь нажимает кнопку, он должен иметь такой код, как этот или похожий:
this.Close();
Form1 form = new Form1(textBox1.Text)
form.Show();
Как только внутри формы загружается форма 1, вы можете добавить код, чтобы что-либо сделать, поскольку вы получаете значения из конструктора.
Ответ 14
Просто введите значение с помощью:
var form1 = new Form1();
string sample = form1.examplestring;`
Чтобы установить значение:
var form1 = new Form1();
form1.examplestring = example;
но проверьте строку как "общедоступную строку"