如何通过按钮在没有Show()/ ShowDialog()的情况下将两个表单之间的文本框值发送到文本框? 我希望textBox在没有开放形式的情况下获得价值。
答案 0 :(得分:1)
要访问您需要使用的文本框数据:textBox1.Text
表单是一个对象,因此您可以定义一个更新文本框值的方法(您可以使用公共访问器公开文本框本身)
答案 1 :(得分:1)
要将父项中的信息传递给子表单,您应该在子表单上为其需要接收的数据创建一个属性,然后让父表单设置该属性(例如,单击按钮时)。
要让子表单向父表单发送数据,子表单应该创建一个属性(它只需要是一个getter),并将其要发送到父表单的数据。然后它应该创建一个父级可以订阅的事件(或使用现有的Form
事件)。
一个例子:
namespace PassingDataExample
{
public partial class ParentForm : Form
{
public ParentForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ChildForm child = new ChildForm();
child.DataFromParent = "hello world";
child.FormSubmitted += (sender2, arg) =>
{
child.Close();
string dataFromChild = child.DataFromChild;
};
child.Show();
}
}
}
namespace PassingDataExample
{
public partial class ChildForm : Form
{
public ChildForm()
{
InitializeComponent();
}
public string DataFromParent { get; set; }
public string DataFromChild { get; private set; }
public event EventHandler FormSubmitted;
private void button1_Click(object sender, EventArgs e)
{
DataFromChild = "Hi there!";
if (FormSubmitted != null)
FormSubmitted(this, null);
}
}
}
答案 2 :(得分:0)
我不知道你说“没有Show()/ ShowDialog()”究竟是什么意思,但这无论如何都不相关,或者我会在这里进一步假设你有两个窗口都打开(无关紧要)你是如何完成的。)
您希望避免两个表单之间的多少耦合,尤其是不像文本框等实现细节。您可以使用delegates
和events
来触发两个表单之间的“发送”数据。然后,您可以轻松传递事件数据,而订阅的其他表单(或任何其他对象)实际上并不知道表单的确切实现细节,它只知道它将收到的数据通过代表(事件)。我不会在这里发布所有代码,因为已经在以下网址上对其进行了很好的解释:http://www.codeproject.com/Articles/17371/Passing-Data-between-Windows-Forms。