2013-02-26 28 views
-1

我有一个叫做SelectCatagoryId的表单,它包含一个DataGridView。我想从这里将选定的cellvalue传递给另一个形式Add_product无法加载构造函数内的文本框

这是SelectcatagoryId中按钮事件中的代码。

private void dataGridView1_MouseClick(object sender, MouseEventArgs e) 
{ 
    String dgv; 
    dgv = dataGridView1.CurrentCell.Value.ToString(); 
    Add_product ap = new Add_product(dgv); 
    this.Close(); 
} 

这里面Add_product形式

namespace Supermarket 
{ 
    public partial class Add_product : Form 
    { 

     public Add_product() 
     { 
      InitializeComponent(); 
     } 

     SqlConnection con; 
     string file; 

     public Add_product(String datagridvalue) 
     { 
      // MessageBox.Show(datagridvalue); 
      textBox10.Text = Convert.ToString(datagridvalue); 
     } 

MessageBox工作正常,在形式selectCatagoryId DGV的值被传递正确地形成Add_product的代码,但我不能分配可变datagridvalue的值到textBox10.Text

+0

你为什么字符串转换为字符串?尝试textBox10.Text = datagridvalue; – VladL 2013-02-26 10:06:56

+2

你有什么错误? – 2013-02-26 10:06:58

+0

请在以后的文章中正确地格式化您的源代码示例。对于应该位于同一缩进级别的语句进行粗糙的左缩进可能会非常混乱。 – 2013-02-26 10:08:20

回答

1

将文本分配到文本框之前,您需要显示表单Add_product。

private void dataGridView1_MouseClick(object sender, MouseEventArgs e) 
{ 
    String dgv; 
    dgv = dataGridView1.CurrentCell.Value.ToString(); 
    Add_product ap = new Add_product(); 
    ap.Show(); 
    ap.SetProduct(dgv); 
    this.Close(); 
} 

...

同时添加此方法Add_product类

public SetProduct(String datagridvalue) 
    { 
     // MessageBox.Show(datagridvalue); 
     textBox10.Text = datagridvalue; 
    } 
+0

thanx for de答案。在这里显示另一个Add_product表单。以前的表单不像以前那样工作。请帮助.. :( – 2013-02-26 10:25:50

+0

因此,而不是创建新的表单:Add_product ap = new Add_product();您需要访问打开的表单,可以在Application.OpenForms集合中找到它)。之后,你需要调用SetProduct方法 – alunyov 2013-02-26 10:29:14

+0

是的,即时尝试这一点。 bt我应该如何关闭打开的Add_Product表单。 Add_product ap = new Add_product(); ap.Close(); ap.Hide(); ap.Dispose()方法不起作用。请帮助 – 2013-02-26 10:37:08

1

即使您正在创建overload of constructor,您也需要InitializeComponent()以便创建所有控件实例。

public Add_product(String datagridvalue) 
{ 
    InitializeComponent(); 
    // MessageBox.Show(datagridvalue); 
    textBox10.Text = Convert.ToString(datagridvalue); 

} 

默认情况下,所有UI Component都是在表单的构造函数中启动的。 和Visual Studio生成InitializeComponent()方法中的所有初始化。

+0

我的Add_product表单正在由另一个按钮事件加载。因此我不能遵循这种方法。请给我一个解决方案.... – 2013-02-26 10:12:28

+0

@KasunMadhupaUdawaththa - 看看我的代码,你有调用'InitializeComponent();'在调用'textBox10.Text = Convert.ToString(datagridvalue);' – 2013-02-26 10:13:41

+0

@KasunMadhupaUdawaththa - 你不需要改变你如何表现形式。 – 2013-02-26 10:14:03