我已经查看了各种答案,我已经用谷歌搜索了我的坚果几个小时了,但似乎仍然无法让这个工作。 我正在尝试更新表单上的文本框。我已经简化了我正在使用的代码,希望它只是我不必要地添加的东西,但仍然无法让它工作。 我知道文本正在传递到文本框并存储在框中,但它不会显示在实际框中。
表格一(Form_DMM);
private void BtnTest_Click(object sender, EventArgs e)
{
ErrorHandling EH = new ErrorHandling();
EH.updatetbtest();
}
在单独的课程中;
public void updatetbtest()
{
string FailedMessagePB = "Test Message" + "\n";
Form_DMM FormDMM = new Form_DMM();
FormDMM.TextBoxAppend(FailedMessagePB);
FormDMM.TextBoxAppend2 = FailedMessagePB;
FormDMM = null;
}
传回形成一个;
public void TextBoxAppend(string WriteMessage)
{
TB_Issues.AppendText(WriteMessage + "\n");
System.Windows.Forms.Application.DoEvents();
TB_Issues.Invalidate();
TB_Issues.Update();
TB_Issues.Refresh();
MessageBox.Show(TB_Issues.Text);
}
public string TextBoxAppend2
{
get
{
return TB_Issues.Text;
}
set
{
TB_Issues.Text = TB_Issues.Text + value + "\n";
System.Windows.Forms.Application.DoEvents();
TB_Issues.Invalidate();
TB_Issues.Update();
TB_Issues.Refresh();
MessageBox.Show(TB_Issues.Text);
}
}
正如您所看到的,我有两次单独的更新文本框的尝试,两者都不会在文本框中显示测试消息,但弹出的消息框将显示测试消息。它甚至会显示来自TB_Issues.AppendText()的双重测试消息。
有人可以帮忙告诉我哪里出错了。这让我疯了!
答案 0 :(得分:2)
你可以像这样使用
public void updatetbtest(Form_DMM FormDMM)
{
string FailedMessagePB = "Test Message" + "\n";
FormDMM.TextBoxAppend(FailedMessagePB);
FormDMM.TextBoxAppend2 = FailedMessagePB;
}
并在你的buttontest_Click
中private void BtnTest_Click(object sender, EventArgs e)
{
ErrorHandling EH = new ErrorHandling();
EH.updatetbtest(this);
}
答案 1 :(得分:1)
从发布的问题中,错误发生在ErrorHandling类中。 在updatetbtest方法中,您将创建表单对象的新Insance。因此,您创建一个单独的表单对象,更改文本然后丢失任何引用,因为您将该变量设置为null。将显示消息框,因为调用了TextBoxAppend方法,并且消息框是一个单独的实例。您创建的新实例永远不会显示。
您必须将调用表单实例移交给updatetbtest方法。
这样的事情:
private void BtnTest_Click(object sender, EventArgs e)
{
ErrorHandling EH = new ErrorHandling();
EH.updatetbtest(this);
}
public void updatetbtest(Form_DMM form)
{
string FailedMessagePB = "Test Message" + "\n";
form.TextBoxAppend(FailedMessagePB);
}
答案 2 :(得分:1)
您尝试创建新表单。但你必须使用现有的。
您可以传递现有表单调用EH.updatetbtest(this);
当然,在updatetbtest(Form_DMM FormDMM)
之类的声明中添加参数。并在函数体中删除声明和new。