0

我试图做一个简单的变量绑定到一个控制文本框,但我一辈子都不能让它工作。这是两种形式的场景,一种是带有数据网格,另一种是带有两个文本框。当我单击数据网格时,我想将这些变量传递给 FORM1 中的文本框。这是我尝试过的,没有结果。以我的形式1

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
     }

我从这里得到了这个例子http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/7308639f-640b-48bf-8293-abcbfd2292d8/

但是它不更新文本框?我应该做些什么不同?

我做错了什么?我怎样才能正确地做到这一点我已经在这里查看了几篇文章,但其中任何一篇都没有成功。任何帮助将不胜感激。

4

3 回答 3

1

我不确定是否是这种情况,但在:
form1.myText = userPicked.tuid
您指的是新创建的 Form1 对象,仅在上面的 1 行初始化。如果您检查form1.myText属性,您可能会注意到它已分配了值,但它不是您要实际引用的表单对象。如果您的文本框在 Form2 中,则在 Form1 中创建一个 Form2 引用。 private Form2 form2 = null;
并创建一个属性

public Form2 SecondForm { set { this.form2 = value; } } 正确分配它,然后form2.tuidInput.Text在您的 Form1 中正常使用。

于 2013-04-09T02:00:51.233 回答
0

你有没有尝试过:

Form1 form1 = new Form1();
form1.myText.Text = userPicked.tuid;
form1.myText.Refresh();
form1.Show();

您可能需要在重新加载后重新绘制文本框。

另外,您说过要正确执行此操作。做到“正确”(我说得松散,因为“正确”可以被这么多不同的人以多种方式解释!) - 我想建议使用 MVP、MVVM 或 MVC 模式来处理这个而不是这样做GUI 中的业务逻辑。

对于 MVP 示例: http ://haacked.com/archive/2006/08/09/ASP.NETSupervisingControllerModelViewPresenterFromSchematicToUnitTestsToCode.aspx

于 2013-04-09T02:02:51.203 回答
0

上面的答案都没有回答我终于在这里找到了答案 http://social.msdn.microsoft.com/forums/en-us/csharpgeneral/thread/9339C805-58C6-4DC2-934F-2A4ADC67ED4D 这就是我所需要的去做。我将文本框更改为公共,然后从 form2 运行它,它就像一个魅力。

Form1 form1 = (Form1)Application.OpenForms["Form1"];

感谢大家的回应。米格尔

于 2013-04-09T14:22:11.623 回答