我的公共方法中的变量存在问题而不更改变量。该方法执行除了更改变量的位之外的所有内容。
这是我的主要形式:
namespace Multi_tool
{
public partial class startForm : Form
{
public string quantity;
public string value;
public string unit;
public void startInmForm(string _quantity,string _unit)
{
//Here I think something is wrong
quantity = _quantity;
unit = _unit;
inmForm inmForm = new inmForm();
inmForm.ShowDialog();
}
后来我打电话给方法:
private void btnVelocity_Click(object sender, EventArgs e)
{
startInmForm("Velocity", "m/s");
}
另一种形式我有这个代码:
namespace Multi_tool
{
public partial class inmForm : Form
{
public inmForm()
{
InitializeComponent();
}
private void inmForm_Load(object sender, EventArgs e)
{
startForm startForm = new startForm();
lblQuantity.Text = startForm.quantity;
lblUnit.Text = startForm.unit;
}
它(inmForm
)是一个带有两个标签和中间文本框的表单,应在文本框中键入一个值。标签应该有文字" Velocity"和" m / s",但它们是空的。那是为什么?
如果我在声明时将文字分配给quantity
或unit
,则该文字会显示在第二个表单(inmForm
)的标签上。
非常感谢您的帮助!
答案 0 :(得分:1)
执行new startForm()
时,您创建了一个新实例而不使用现有实例。
您需要在调用ShowDialog之前将参数从startForm发送到inmForm。 (财产或建筑师)
public partial class inmForm : Form
{
private startForm _startForm;
public inmForm(startForm startForm)
{
_startForm = startForm;
InitializeComponent();
}
private void inmForm_Load(object sender, EventArgs e)
{
lblQuantity.Text = _startForm.quantity;
lblUnit.Text = _startForm.unit;
}
}
public void startInmForm(string _quantity,string _unit)
{
//Here I think something is wrong
quantity = _quantity;
unit = _unit;
inmForm inmForm = new inmForm(this);
inmForm.ShowDialog();
}
答案 1 :(得分:0)
这是问题所在:
private void inmForm_Load(object sender, EventArgs e)
{
startForm startForm = new startForm();
lblQuantity.Text = startForm.quantity;
lblUnit.Text = startForm.unit;
}
您正在实例化表单并立即将值设置为文本框,此时值仍为空。
试试这个例子:
private void inmForm_Load(object sender, EventArgs e)
{
startForm startForm = new startForm();
startForm.startInmForm("Velocity", "m/s");
lblQuantity.Text = startForm.quantity;
lblUnit.Text = startForm.unit;
}
作为旁注。尝试用大写来命名你的课程。这样可以更容易区分类和变量。