我还是C#的新手所以请耐心等待。
我的Form1带有DataGridView
和Button
。此按钮可打开Form2
。
Form2
包含关闭TextBox
的{{1}}和Button
。
我需要将Form2
中TextBox
的文字写入Form1中Form2
的第一个单元格。在我正在开发的应用程序中,DataGridView
中的DataGridView
中已有其他数据。
我已上传Visual Studio 2010文件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();
}
}
。
感谢帮助。
答案 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();
}