我一直在努力解决这个问题,所以我希望你能帮助我。
我试图让表单2 在用户点击后设置位于表单1 中的RichboxText文本(名为" sourceCode") 表单2 上的按钮。
我将RichboxText修改器更改为" public"我可以通过在表格2按钮中放置以下内容来访问控件:
private void buttoncreatetable_Click(object sender, EventArgs e)
{
GlobalVar.table = "<table" + " align=" + "\"" + alignment.Text + "\"" + " border=" + "\"" + bordersize.Value + "\"" +
" cellpadding=" + "\"" + padding.Value + "\"" + " cellspacing=" +
"\"" + spacing.Value + "\"" + " style=" + "\"" + "width:" + width.Value + "px;"
+ " height:" + height.Value + "px;" + "\"" + ">" + Environment.NewLine + "<tbody>"; //end tbody, table, tr and td
Form1 form1 = new Form1();
form1.Show();
form1.sourceCode.SelectedText = GlobalVar.table;
然而,这段代码的结果是虽然它将文本插入到Richbox中,但是它创建了一个完全*新的Form 1实例并执行它,而不是将文本插入到Form的原始实例的Richbox中1而不创建新的。
我怀疑原因是因为这段代码:Form1 form1 = new Form1();它实例化Form1的新副本。但是,如果不这样做,就无法轻松访问Form 1控件属性。
请帮助我。提前谢谢!
答案 0 :(得分:1)
Form firstForm = Application.OpenForms["FormName"];
OpenForms
属性是一个非常基本的属性,列出了当前打开的表单。只需使用表单的名称作为ID。
答案 1 :(得分:0)
只需在Form1
课程中添加Form2
引荐属性。
public Form1 form1;
并在Main方法中指定它(我假设你在那里初始化它们)。
Form1 form1 = new Form1();
Form2 form2 = new Form2();
form1.Show();
form2.Show();
form2.form1 = form1;
编辑:此外,您不应该更改一个表单的内部元素。它打破了基本的OO编程原则。而是在Form1
void UpdateSelectedText(string updatedText)
{
sourceCode.SelectedText = updatedText;
}
然后从form2
form1.UpdateSelectedText("Some new text");