0

我还是 C# 的新手,所以请多多包涵。

我有 Form1DataGridView和 a Button。此按钮打开Form2

Form2包含 aTextBox和 aButton关闭Form2

我需要将TextBoxin 中的文本写入Form1Form2的第一个单元格中。DataGridView在我正在开发的应用程序中,.in 中已经有其他DataGridView数据Form1

我已经在这里上传了 Visual Studio 2010 文件。

编辑:

请看这个截图:

在此处输入图像描述

这是我正在使用的代码:

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();
    }
}

Form1当我不想的时候,我似乎在实例化一个新的。

感谢帮助。

4

2 回答 2

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'stextFromTextBox成员中的值,相应地设置数据网格中的单元格值。

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

   Form2 myFormWithATextBox = new Form2();

   if (myFormWithATextBox.ShowDialog(this) == DialogResult.OK)
   {
      this.dataGridView1.Rows[0].Cells[0].Value = myFormWithATextBox.textFromTextBox;
   }
   myFormWithATextBox.Dispose();

考虑到你的主窗体只是一个辅助窗体控件Form1Form2它不应该对应用程序的流程进行太多控制,因此不承担实例化主窗体的责任。

于 2012-09-30T20:18:32.973 回答
0

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

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();
    }

这是您修改后的应用程序

于 2012-09-30T20:27:20.443 回答