如何将值从DataGridView传递到另一个窗体文本框

本文关键字:另一个 窗体 文本 DataGridView | 更新日期: 2023-09-27 18:20:31

我现在可以传输put的值,问题是在switch的情况下,我进行switch可以将数据传输到多个表单put只有打开的表单put我不能在switch中这样做,它在运行时会转到默认情况,所以问题在(FORMID)我如何在这里正确使用switch case这是我的form1代码

public partial class Form1 : Form
{
    Form2 f2 = new Form2();
    public Form1()
    {
        InitializeComponent();
        f2.setParent(this);
        f2.MdiParent = this.MdiParent;
    }
    private void button1_Click(object sender, EventArgs e)
    {
        f2.Show();
        f2.Activate();
    }
}

}

这个表2代码:

public partial class Form2 : Form
{
    public int FORMID = 0;
    private Form1 f1;
    private Form3 f3;
    DataTable dt;
    public Form2()
    {
        InitializeComponent();
    }
    void load_table()
    {
        string constring = "Data Source =.; initial Catalog = business; Integrated Security=SSPI;";
        SqlConnection CN = new SqlConnection(constring);
        SqlCommand cmd = new SqlCommand("select * from T_AKARAT_BUILDING_TP", CN);
        try
        {
            SqlDataAdapter sda = new SqlDataAdapter();
            sda.SelectCommand = cmd;
            dt = new DataTable();
            sda.Fill(dt);
            BindingSource bsource = new BindingSource();
            bsource.DataSource = dt;
            dataGridView1.DataSource = bsource;
            sda.Update(dt);
        }
        catch { }
    }
    private void Form2_Load(object sender, EventArgs e)
    {
        load_table();
    }
    public void setParent(Form1 parentValue)
    {
        f1 = parentValue;
    }
    public void setParent(Form3 parentValue)
    {
        f3 = parentValue;
    }
    private void dataGridView1_DoubleClick(object sender, EventArgs e)
    {
        switch (FORMID)
        {
            case 1:
        f1.textBox1.Text = dt.Rows[dataGridView1.CurrentCell.RowIndex][0].ToString();
        f1.textBox2.Text = dt.Rows[dataGridView1.CurrentCell.RowIndex][1].ToString();
        this.Hide();
        break;
            case 2:
        f3.textBox1.Text = dt.Rows[dataGridView1.CurrentCell.RowIndex][0].ToString();
        f3.textBox2.Text = dt.Rows[dataGridView1.CurrentCell.RowIndex][1].ToString();
        this.Hide();
        break;
            default:
        MessageBox.Show("plz select");
        break;
        }
        this.Hide();
    }
}

}

我在表单2中设置了文本框修饰符public,但这段代码不起作用&我不知道这里缺了什么或错了什么希望能帮助我

希望有人能纠正我没有给出例子的代码,请

如何将值从DataGridView传递到另一个窗体文本框

要做到这一点,您可以使用创建类1.cs类中的代码,例如:

class Class1
{
    public string firstName;
    public string lastName;
    public Class1 FirstName(string firstname)
    {
        this.firstName = firstname;
        return this;
    }
    public Class1 LastName(string lastname)
    {
        this.lastName = lastname;
        return this;
    }
}

表1:中的代码

Class1 c = new Class1();
private void button1_Click(object sender, EventArgs e)
{
    c.firstName = dataGridView1.CurrentRow.Cells[1].Value.ToString();
    c.lastName = dataGridView1.CurrentRow.Cells[2].Value.ToString();
}

现在您可以将此代码用于所有程序

另一种形式的示例:

label1.text = c.firstName;
label2.text = c.lastName;

好运

另一种方法是,在form2中定义两个公共变量,在form1中将该值设置为这些变量,然后在form2中输入事件将这些变量设置为文本框

为文本框赋值应该按照您的方式进行。但是,您的代码没有调用FDAS.Show.

还有您的关闭form1,因此您可能需要声明一个新的form1来设置父

在cellmousedoubleclick事件中尝试,我输入的名称只是示例,只有您可以更改为自己的名称:

private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
       Form2 f2 = new Form2();
       f2.textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
       f2.Show();
}

如果textbox的访问修饰符是公共的,则会执行此操作。

这2个示例将您的2个文本框文本放置到1º示例-列值-,2º示例-行值。

        private void dataGridView1_ColumnHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            Form2 f2 = new Form2();
            f2.textBox1.Text = dataGridView1.Rows[0].Cells[e.ColumnIndex].FormattedValue.ToString();
            f2.textBox2.Text = dataGridView1.Rows[1].Cells[e.ColumnIndex].FormattedValue.ToString();
            f2.Show();
        }
        private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            Form2 f2 = new Form2();
            f2.textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[0].FormattedValue.ToString();
            f2.textBox2.Text = dataGridView1.Rows[e.RowIndex].Cells[1].FormattedValue.ToString();
            f2.Show();
        }

也许是这样的。。FDAS必须首先声明为Form类

public void setParent()
{
    FDAS = form2;
}

不幸的是,您没有说明哪行代码导致了"对象引用未设置"异常。而且,由于我们无法看到您的所有代码,我们必须猜测问题可能在哪里。

当您实例化Form2时,您必须设置它的MdiParent属性。然而,您在Form2构造函数中使用了MdiParent属性(这也不正确):

public form2()
{
    InitializeComponent();
    // neither one of the following lines make any sense, get rid of them
    //form1.setParent(this);
    //form1.MdiParent = this.MdiParent; 
}

您没有显示在Form1中实例化Form2的代码,但需要这样做:

// somewhere in Form1
Form2 FDAS = new Form2();
FDAS.MdiParent = this;

此外,因为form1是一个MdiParent,我认为当你关闭()它时也会出错,所以我不确定你为什么要这么做!