无法在构造函数中加载文本框

时间:2013-02-26 10:04:02

标签: c#

我有一个名为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的值分配给{ {1}}。

2 个答案:

答案 0 :(得分:1)

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

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

}

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

答案 1 :(得分:1)

在将文本分配给textBox之前,您需要显示表单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;
    }