如何将数据从datagridview拉到另一个表单's文本框
本文关键字:表单 文本 另一个 数据 datagridview | 更新日期: 2023-09-27 18:09:52
我正试图将数据从form1中的datagridview值拉到form2中的文本框。
形式1;
public string xxx;
public string GetX()
{
return xxx;
}
private void addADocumentToolStripMenuItem_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows != null)
{
xxx = dataGridView1.CurrentRow.Cells["Name"].Value.ToString();
AddDocumentForm adf = new AddDocumentForm();
adf.ShowDialog();
}
else
{
MessageBox.Show("Please choose a record.");
return;
}
}
在表单2中尝试将xxx值拉入文本框;
using (Form1 f= new Form1())
{
string result= f.GetX();
txtSavedDocumentID.Text = result;
}
在Form2
中,您正在创建Form1
的新实例:
using (Form1 f= new Form1())
由于我不能看到你的全部代码,我可能是错的-但我认为这很可能不是你想要的。
您实际需要的是在Form1
的现有实例上调用GetX()
。
现在你需要一些方法来知道Form1
在Form2
上的正确实例。一种简单的可能性是,,但只有当您总是只使用Form1
的一个实例时,才能在Form1
上公开一个静态属性,从而向外部世界提供它的一个单例实例:
public class Form1
{
// ...
public static readonly Form1 Instance {get; private set};
public Form1()
{
Instance = this;
}
// ...
}
在Form2
中,不是用using语句创建一个新实例,而是像这样访问它:
string result = Form1.Instance.GetX();
txtSavedDocumentID.Text = result;
现在请注意,如果您的应用程序有可能打开多个Form1实例,那么这将不起作用,并且会产生不良的副作用。在这种情况下,需要另一种方法。但我希望你现在知道可能是什么错了,你可以解决它。
编辑:虽然这将解决你的问题,希望,我想补充的是,这不是一个很好的方法,让你的表单需要了解彼此。您应该在后台有一些模型类,窗体可以在其中读取和写入数据,而不需要彼此直接交互。但进一步探讨这个问题将超出这个问题的范围。
changed Form2;
public Form2(string qs)
{
InitializeComponent();
textBox1.Text = qs;
}
在Form1; 从组合框中获取文本并传递给form2;
{
var xxxx = (cbxEmployeeName.GetItemText(cbxEmployeeName.SelectedItem));
Form2 f = new Form2(xxxx);
f.Show();
}