我试图做一个简单的变量绑定到控件文本框但我不能让我的生活得到这个工作。下面是两个表单1,其中包含datagrid,另一个表单包含两个文本框。当我点击datagrid时,我想将这些变量传递给FORM1中的文本框。这是我试过没有结果。 在我的form1
public string myText
{
get { return tuidInput.Text; }
set { tuidInput.Text = value; }
}
然后我的表格二,当我尝试设置值我尝试这个。
private void selectUser(object sender, DataGridViewCellEventArgs e)
{
userPicked.tuid = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells["spriden_id"].Value.ToString();
userPicked.Name = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells["spriden_last_name"].Value.ToString();
Form1 form1 = new Form1();
form1.myText = userPicked.tuid
}
然而它没有更新文本框?我应该做些什么?
我做错了什么?我怎么能正确地做到这一点我在这里看过几篇文章,但在其中任何一篇都没有成功。 任何帮助都会非常感激。答案 0 :(得分:1)
我不确定是否是这种情况,但是在:
form1.myText = userPicked.tuid
你正在引用一个新创建的Form1对象,只在上面初始化了1行。如果您检查form1.myText
属性,您可能会注意到它已赋值,但它不是您想要实际引用的表单对象。
如果您的文本框在Form 2中,然后在Form 1中创建Form 2引用。
private Form2 form2 = null;
并创建一个属性
public Form2 SecondForm
{
set { this.form2 = value; }
}
正确分配,然后正常使用Form1中的form2.tuidInput.Text
。
答案 1 :(得分:0)
你试过了吗?
Form1 form1 = new Form1();
form1.myText.Text = userPicked.tuid;
form1.myText.Refresh();
form1.Show();
重新加载后,您可能需要重新绘制文本框。
另外,你说你想要正确地做到这一点。 “正确地”做到这一点(我说松散,因为“正确”可以被许多不同的人以太多的方式解释!) - 我想建议使用MVP,MVVM或MVC模式来处理这个而不是这样做GUI中的业务逻辑。
答案 2 :(得分:0)
上面的答案都没有回答我最终在这里找到答案的问题 http://social.msdn.microsoft.com/forums/en-us/csharpgeneral/thread/9339C805-58C6-4DC2-934F-2A4ADC67ED4D 这就是我需要做的一切。我将文本框更改为public,然后从form2运行它,它就像一个魅力。
Form1 form1 = (Form1)Application.OpenForms["Form1"];
感谢大家的回复。 米格尔