当我双击form1中的文本框时,我打开了一个数据网格。我需要在form2中对datagrid的单元格进行两次单击,当我单击它时,已经将值带到form1中的文本框中。我已经尝试了很多不再适用的方法,在我点击单元格之前,他已经自动运行了自动添加文本框中的值,有人可以帮忙吗?
我试过了:
in form1
Ncm Ncm formNcm = new ();
formNcm.Show ();
ncmcb.Text formNcm.getNCM = ();
ncmcb.Focus ();
form2
public string getNCM() { = dataGridView1.CurrentCell.Value.ToString value2 string(); 返回值2; } 只有这样它才会选择已经拥有datagrid的值而且我无法更改,如果我更改它不会获取form1中文本框的值
答案 0 :(得分:0)
设计明智,一个表单永远不会知道其他表单有文本框或下拉或其他控件。理想情况下,两个表单应通过公共属性或自定义事件进行交互。
将值从Form2分配给Form1
在表单2中定义自定义事件。
使用该事件创建Form1注册表,以便在表单2触发时,Form1可以捕获它。
在Form2中捕获网格单元格单击事件并触发自定义事件。您将使用EventArgs传递值。
在Form1中,事件处理程序应该开始运行,您可以在其中分配从表单2发送的值。
这是一篇完全相同的文章:http://www.codeproject.com/Articles/17371/Passing-Data-between-Windows-Forms
如果要将Form2中的值分配给Form1,
在表格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 ();