1

当我双击 form1 中的文本框时,我打开了一个数据网格。我需要在 form2 中的 datagrid 单元格上单击两次,当我单击它时,它已经为 form1 中的文本框带来了价值。我尝试了许多不再有效的方法,在我单击单元格之前,他已经自动在文本框中添加了值,有人可以帮忙吗?

我试过这个:

在表格1

         Ncm Ncm formNcm = new ();
         formNcm.Show ();
         ncmcb.Text formNcm.getNCM = ();
         ncmcb.Focus ();

表格2

public string getNCM() { = dataGridView1.CurrentCell.Value.ToString value2 string(); 返回值2;只有这样,它选择已经拥有数据网格的值,我不能改变,如果我改变它不会采用 form1 中文本框的值

4

1 回答 1

0

设计方面,一个表单永远不应该知道另一个表单有一个文本框或下拉菜单或其他一些控件。理想情况下,这两种形式应该通过公共属性或自定义事件进行交互。

将值从 Form2 分配给 Form1

  1. 在表单 2 中定义自定义事件。

  2. 使 Form1 向该事件注册,以便当 Form 2 触发它时,Form1 可以捕获它。

  3. 在 Form2 中捕获网格单元格单击事件并触发自定义事件。您将使用 EventArgs 来传递值。

  4. 在 Form1 中,事件处理程序应该开始起作用,您可以在那里分配从 Form 2 发送的值。

这里有一篇文章正是这样做的:http: //www.codeproject.com/Articles/17371/Passing-Data-between-Windows-Forms

如果你想从 Form2 给 Form1 赋值,

在 Form 2 中,定义一个属性,例如。

publis string MyTextBoxValue //Choose a better name :)
{
     set {myTextBox.Text = value;}
}

当您打开表格时,您可以通过以下方式拨打电话,

     Ncm Ncm formNcm = new ();
     formNcm.MyTextBoxValue = "Grid Cell Value"; //Whatever your value is
     formNcm.Show ();
     ncmcb.Text formNcm.getNCM = ();
     ncmcb.Focus ();
于 2012-04-18T00:02:54.867 回答