#c# #visual-studio #winforms #textbox
#c# #visual-studio #winforms #текстовое поле
Вопрос:
Это мой код: В родительской форме:
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);
//}
Этот код объявлен как общедоступный статический строковый код, в то время как code1 — это просто строка.
Я также проверил точки останова, и значение достигает значения функции в родительской форме, но, тем не менее, я не смог показать его в текстовом поле.
Ребята, кто-нибудь может мне помочь …..??
Ответ №1:
Сначала передайте родительскую форму вашему Show()
вызову.
Изменить:
help.Show();
Для:
help.Show(this);
Затем в дочерней форме вы можете привести .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);
}
}
Комментарии:
1. Большое спасибо, братан, это помогло, но не могли бы вы объяснить, что я делал не так и почему я не мог показать это значение раньше ….??
2. В вашем событии FormClosed() вы создавали новый экземпляр tokenform . Этот экземпляр, который вы пытались использовать, был просто невидимым и не совпадал с экземпляром, который вы видите на своем экране.