我的申请表中有两个Forms
。 Form
包含以下字段:txtPower
,txtTension
和txtCurrent
。我想通过另一个TextBox
访问这些Form
中填写的值。在第二个Form
中,我实例化了第一个object
(MotorForm)的Form
,但我无法访问TextBox
。
public MacroForm()
{
InitializeComponent();
MotorForm motorForm = new MotorForm();
motorForm.Show();
}
有什么办法吗?
答案 0 :(得分:1)
请不要在表单中公开控件。决不。 (除非你有充分的理由。)
如果问题很简单不在你的程序中使用MVVM(或类似程序)(你应该考虑每个程序都很简单),你应该公开值< / em>通过属性实例化的表单。认为
public string Power
{
get { return txtPower.Text; }
set
{
if(ValidatePower(value))
{
txtPower.Text = value;
}
else
{
// throw ??
}
}
}
如果我们可以对值的类型做出明智的假设,我们可以将其扩展到
public double Power
{
get
{
// parse the value
// validate the value
// throw if not valid ??
// return the value
}
set
{
// validate the value
// set the value in the text box
}
}
如果您公开了txtPower
对象,那么您将使实例化类依赖于实例化类的实现细节,这实际上永远是一件好事。
答案 1 :(得分:0)
似乎您的问题是使用ShowDialog
打开表单的完美情况。
要完成此操作,您需要更改要在Modifiers
上访问的控件的MotorForm
属性,并将其设置为Public
。并且还将表单的DialogResult
属性设置为所需的值,即OK。无论如何,更简单的方法是将它设置在应该关闭表单的按钮上。假设OK或CANCEL按钮。
然后您可以这样创建表单:
MotorForm motorForm = new MotorForm();
if(motorForm.ShowDialog() == DialogResult.OK)
{
string myValue = motorForm.txtPower.Text; //you can access your values this way
}