#c# #winforms
#c# #winforms
Вопрос:
У меня один вопрос. Существует 2 формы (Form1 и Form2).
Form1
и Form2
содержит 1 текстовое поле и 1 кнопку. После запуска приложения, нажав a buttonForm1
, откроется form2 .
Пользователь пишет «Привет» в textboxForm2
, и после этого пользователь нажимает на buttonForm2
Form2, который скроется, и появится «Привет» textboxForm1
.
Итак, мой следующий план, я хочу добавить label1.Text
в Form1. Это label1.Text
будет считываться так же, как textboxForm1
и , и label1.Text
помещается в private void Form1_Load(object sender, EventArgs e)
Согласно приведенному ниже коду, strValue = "Hello"
, Как сделать label1.Text = strValue
в Form1_load
?
Когда я запускаю приложение. Появляется ошибка: strValue does not exist in the current context
.
//Form1
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//Error
label1.Text = strValue;
}
public void PassValue(string strValue)
{
textBox1.Text = strValue;
}
private void button1_Click(object sender, EventArgs e)
{
Form2 objForm2 = new Form2(this);
objForm2.Show();
}
}
//Form2
public partial class Form2 : Form
{
Form1 ownerForm = null;
public Form2(Form1 ownerForm)
{
InitializeComponent();
this.ownerForm = ownerForm;
}
private void button1_Click(object sender, EventArgs e)
{
this.ownerForm.PassValue(textBox1.Text);
this.Hide();
}
private void button2_Click(object sender, EventArgs e)
{
this.Hide();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
}
Мой ожидаемый результат — label1 .Текст будет читаться так же, как (textboxForm1) и label1 .Текст помещается в private void Form1_Load(отправитель объекта, EventArgs e).
Ответ №1:
strValue
является локальным для вашего PassValue
метода. По сути, ваш PassValue
определяется как «все, что передается здесь в качестве параметра, давайте вызовем это strValue
внутри этого метода«. Form1_Load
это другой метод. Он ничего не знает о PassValue
внутреннем материале.