[英]C# change textbox text on a modal form from an another form
我试图通过单击另一个活动窗体上的按钮来更改模态主窗体上TextBox上的文本,需要帮助。
Main form *Modal mode
public void changetext(){
textbox1.text = textnew;
}
form2 *active form
private void btnChange_Click(object sender, EventArgs e)
{
mainform form1 = new mainform;
public String textnew = "NEW"
form1.changetext();
this.close
}
我已经厌倦了使用此代码,但它给了我以下错误:在创建窗口句柄之前,无法在控件上调用Invoke或BeginInvoke:
public void LabelWrite(string value)
{
if (InvokeRequired)
Invoke(new LabelWriteDelegate(LabelWrite), value);
else
{
textBox1.Text = value;
}
}
delegate void LabelWriteDelegate(string value);
我认为这是一个逻辑问题。 如果我了解您的要求,则您有一个包含搜索文本框的主表单。 当用户启动Serach时,您将打开一个模式窗体,其中显示所有可能的结果。 用户选择他想要的值,然后在主窗体中获得结果。 这个对吗? 如果是这样,您应该这样:
例如:
var result = null;
var modal = new ModalForm(query);
if(modal.ShowDialog() == DialogResult.OK) // This means the user has selected a value
{
result = modal.SelectedResult;
}
modal.Close();
modal.Dispose();
最简单的方法是将新文本传递到模式窗口。 例如:
主要形式模态模式
public void changetext(String textnew){
textbox1.text = textnew;
}
form2活动表格
private void btnChange_Click(object sender, EventArgs e)
{
mainform form1 = new mainform;
form1.changetext("NEW");
this.close
}
如果您是我,我也将更改表单名称,这会造成一些混乱。 PS我仍然不明白这是什么。需要this.close
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.