c#datagridview如何使用其他形式的文本框传递值

时间:2014-09-04 02:26:43

标签: c# forms

  • form1我有一个gui按钮来选择
  • form2是我的datagridview
  • form3是我输入名字姓氏和mi
  • 的地方
  • 我的form1代码是form2.show
  • 我的form2上的
  • 是form3.show
  • 我在form3中有一个代码,它使用一个计数器来输入datagridView1
 private void btnAdd_Click(object sender, EventArgs e)
            {
                int counter = 0;
                if (dataGridView1.Rows.Count > 1)
                {
                    while (counter != dataGridView1.Rows.Count - 1)
                    {
                    if (dataGridView1.Rows[counter].Cells[0].Value.ToString() ==txtName.Text)
                    {
                        MessageBox.Show("name already exist");
                        return;
                    }
                    counter++;
                }
            }
if (txtName.Text == "")
            {
                MessageBox.Show("name field should not be empty");
                return;
            }
else
            {
                dataGridView1.Rows.Add(txtName.Text);
            }
  • 我的问题是form3不识别dataGridView1如何将form3中的textbox值赋入form2中的datagridview。

2 个答案:

答案 0 :(得分:0)

如果正在打开对话框,输入数据然后关闭对话框,则根本不应该调用Show。你应该改为调用ShowDialog,它将表单显示为模态对话。在这种情况下,调用者可以通过在显示对话之前设置属性或传递方法参数将数据传递到对话框,然后通过获取属性或获取方法返回值来获取数据。然后由调用者根据数据执行所需操作,这意味着您的form2可以填充自己的网格。

E.g。

using (var dialogue = new Form3())
{
    // Pass data in as required.
    dialogue.SomeProperty = someValue;

    // Display the dialogue...
    if (dialogue.ShowDialog() == DialogResult.OK)
    {
        // ...and get data out if the user clicks OK.
        someOtherValue = dialogue.SomeOtherProperty;

        // Use data here.
    }
}

由您来定义对话表单中的相应成员以公开您想要的数据。

答案 1 :(得分:-1)

Reference of DataGridView传递给form 3

第1步:创建form3的过载构造函数。

DataGridView dg;

 public Form3(ref DataGridView dgv)
 {
    InitializeComponent();
    dg=dgv;
 }

第2步:从Form2,如何致电,在form2 datagridview reference传递form3 constructor ...

form3 frm = new form3(ref datagridview1);
frm.show();

第3步:您的Form3代码..

     private void btnAdd_Click(object sender, EventArgs e)
     {
        int counter = 0;
        if (dg.Rows.Count > 1)
        {
             while (counter != dg.Rows.Count - 1)
             {
                 if (dg.Rows[counter].Cells[0].Value.ToString() ==txtName.Text)
                 {
                      MessageBox.Show("name already exist");
                      return;
                  }
                  counter++;
             }
        }
        if (txtName.Text == "")
        {
             MessageBox.Show("name field should not be empty");
             return;
        }
        else
        {
            dg.Rows.Add(txtName.Text);
        }
   }