从Form2中的文本框写入Form1中的Datagridview

时间:2012-09-30 17:24:38

标签: c# winforms

我还是C#的新手所以请耐心等待。

我的Form1带有DataGridViewButton。此按钮可打开Form2

Form2包含关闭TextBox的{​​{1}}和Button

我需要将Form2TextBox的文字写入Form1中Form2的第一个单元格。在我正在开发的应用程序中,DataGridView中的DataGridView中已有其他数据。

我已上传Visual Studio 2010文件here

编辑:

请看这个截图:

enter image description here

以下是我正在使用的代码:

Form1

我似乎在不想要的时候实例化一个新的public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form1 form1 = new Form1(); form1.dataGridView1.Rows[0].Cells[0].Value = textBox1.Text; this.Close(); } }

感谢帮助。

2 个答案:

答案 0 :(得分:1)

您不需要Form2来实例化(再次)主窗体(Form1)。

更合适的方法是打开包含文本框的辅助表单作为模态对话框窗口,让开启者表单(Form1)访问用户在Form2输入的文本实例

下面介绍了所需的更改:

Form2更改:

1.-添加一个新的类成员来存储要在文本框textBox1中引入的字符串。

public String textFromTextBox = null;

2.-将代码添加到OK按钮的clic事件处理程序中,以便在新的类成员textFromTextBox中存储文本框中引入的值:

3.-最后,在相同的clic事件处理代码中将DialogResult属性设置为DialogResult.OK

Form2代码如下所示:

public partial class Form2 : Form
{
    [...]

    // This class member will store the string value 
    // the user enters in the text-box
    public String textFromTextBox = null;

    [...]

    // This is the event-handling code that you must place for
    // the OK button.
    private void button1_Click(object sender, EventArgs e)
    {
        this.textFromTextBox = this.textBox1.Text;
        this.DialogResult = DialogResult.OK;
    }
}

Form1更改

1.-在带有“输入文本”标签的按钮中(代码中实际缺少),在Click事件处理程序中输入打开Form2所需的代码作为模态Dialog

2.-通过恢复Form2的{​​{1}}成员中存储的值,相应地设置数据网格中的单元格值。

3.-最后处置您的textFromTextBox实例。

Form2

考虑到您的主要表单是 Form2 myFormWithATextBox = new Form2(); if (myFormWithATextBox.ShowDialog(this) == DialogResult.OK) { this.dataGridView1.Rows[0].Cells[0].Value = myFormWithATextBox.textFromTextBox; } myFormWithATextBox.Dispose(); Form1它只是一个辅助表单控件,它不应该对您的应用程序流程进行太多控制,因此不承担责任实例化主表格。

答案 1 :(得分:0)

您可以通过创建另一个接受以下参数的承包商将变量从Form传递到另一个: -

1)转到form1然后创建另一个承包商:

    public Form1(string myString)
    {
        InitializeComponent();

        if (myString != null)
            dataGridView1.Rows[0].Cells[0].Value = myString;
    }

2)转到form2并在按钮下面写下这段代码:

    private void button1_Click(object sender, EventArgs e)
    {
        Form1 frm1 = new Form1(textBox1.Text);
        frm1.ShowDialog();
    }

Here you are your application after modification