C# 在父窗体的文本框中显示子窗体中gridview所选单元格的值
这是我的代码: 以家长形式:C# 在父窗体的文本框中显示子窗体中gridview所选单元格的值,c#,visual-studio,winforms,textbox,C#,Visual Studio,Winforms,Textbox,这是我的代码: 以家长形式: public void tokenform_Load(object sender, EventArgs e) { tbvarchecker.Text = HelpForm.code; } private void TextBox1_KeyDown(object sender, KeyEventArgs e) { HelpForm help = new HelpForm(); if (e.Ke
public void tokenform_Load(object sender, EventArgs e)
{
tbvarchecker.Text = HelpForm.code;
}
private void TextBox1_KeyDown(object sender, KeyEventArgs e)
{
HelpForm help = new HelpForm();
if (e.KeyCode == Keys.F2)
{
help.Show();
}
}
public void setvalues(string cd)
{
tbvarchecker.Text = cd;
label10.Text = cd;
}
Child Form code:
private void dgv(object sender, DataGridViewCellMouseEventArgs e)
{
DataGridViewRow row = dgvshowallfields.Rows[e.RowIndex];
code = row.Cells[0].Value.ToString();
code1 = row.Cells[0].Value.ToString();
this.Close();
}
private void HelpForm_FormClosed(object sender, FormClosedEventArgs e)
{
tokenform tkf = new tokenform();
tkf.setvalues(code);
tkf.setvalues(code1);
tkf.tokenform_Load(sender,e);
}
//private void HelpForm_FormClosing(object sender, FormClosingEventArgs e)
//{
// tkf.setvalues(code);
//}
此代码声明为公共静态字符串代码,而代码1只是字符串。
我还检查了断点,值到达父窗体函数集值中的函数,但仍然无法在文本框中显示它。
伙计们,有人能帮我吗…?首先,将父窗体传递给您的
Show()
呼叫
更改:
help.Show();
致:
然后,在子窗体中,可以将.Owner
属性强制转换为父窗体类型并调用其方法:
private void HelpForm_FormClosed(object sender, FormClosedEventArgs e)
{
tokenform tkf = this.Owner as tokenform;
if (tkf != null)
{
tkf.setvalues(code);
tkf.setvalues(code1);
tkf.tokenform_Load(sender,e);
}
}
非常感谢,兄弟,这很有帮助,但是你能解释一下我做错了什么,为什么我不能早点显示这个值吗?……在FormClosed()事件中,你创建了一个新的tokenform实例。您试图使用的实例是不可见的,与您在屏幕上看到的实例不同。
private void HelpForm_FormClosed(object sender, FormClosedEventArgs e)
{
tokenform tkf = this.Owner as tokenform;
if (tkf != null)
{
tkf.setvalues(code);
tkf.setvalues(code1);
tkf.tokenform_Load(sender,e);
}
}