在windows窗体之间传递字符串,不使用.show()方法[不刷新窗体]
本文关键字:窗体 show 方法 刷新 之间 字符串 windows | 更新日期: 2023-09-27 17:53:13
我有两个表单。
在form1上有一个名为textbox1的文本框和一个按钮[以及许多其他文本框]
点击按钮,会打开一个新表单form2
表单2有一个2列的datagridview。
单击datagridview单元格[存在于form2中]使用:
private void dataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
,所选行的第一列的内容必须转到form1中的textbox1中,不能刷新或重新打开form1。
我如何做到这一点,而不使用。show()方法,因为它会刷新我的form1,并因此失去所有用户类型的信息在其他文本框?
注意: 从datagridview检索到字符串形式由:
dataGridView.SelectedRows[0].Cells[1].Value.ToString()
将该单元格值放入public property
中,如
public string gridcellValue
{
get; set;
}
在你的dataGridView_CellMouseClick(
事件处理程序设置属性说
this.gridcellValue = dataGridView.SelectedRows[0].Cells[1].Value.ToString();
然后在您的form1中,您可以使用form2的实例访问它(因为您从form1创建了form2实例)
textbox1.Text = frm2.gridcellValue;
另一种方法是将该文本框设置为公共属性并在form2构造函数中传递form1实例并将文本框设置为
在Form1public TextBox Form1Text
{
get {return this.testbox1;}
set {this.testbox1 = value;}
}
Form2 frm2 = new Form2(this);
frm2.Show();
在Form2 public class Form2 : Form
{
Form _form1;
public Form2(Form1 frm)
{
_form1 = frm;
}
//In event handler
private void dataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
//set the value
((TextBox)_form1.Form1Text).Text = dataGridView.SelectedRows[0].Cells[1].Value.ToString();
}
}
我解决了这个问题,我想我的答案可以帮助那些需要帮助的人[像我一样]
基本上,在Form1中,您创建了一个公共静态字符串,如 public static string mystring = "";
然后在指向Form2的按钮上执行以下操作:
private void button_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
if (frm.ShowDialog() == DialogResult.OK)
{
this.txt_box.Text = Form1.mystring;
}
}
在form2中,:
private void dataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
Form1.mystring = dataGridView.SelectedRows[0].Cells[1].Value.ToString();
this.DialogResult = DialogResult.OK;
this.Close();
}
就是这样!祝你好运