楼主你好,早上在你的另一条博问(https://q.cnblogs.com/q/103198/)上我回答时,截图上传失败了,刚刚才发现。那个博问我刚刚把答案添上去了,我在这里再添一下,希望对你有所帮助!
===================================
你好,这就涉及到作用域的问题了,我猜测你是用以下方式操作的:
在form1中:
private void button1_Click(object sender, EventArgs e)
{
this.button1.BackColor = Color.Red;
Form2 f2 = new Form2();
f2.Show();
this.Hide();
}
在form2中:
private void button1_Click(object sender, EventArgs e)
{
Form1 f1 = new Form1();
f1.Show();
this.Hide();
}
仔细看代码,会发现:在form2中,是再次实例了一个form1,这其实和之前不是同一个实例了(默认的实例在Program.cs中用Application.Run(new Form1())生成的),你想在form2中返回到默认的form1实例,你可以用如下代码:
form2中:
public partial class Form2 : Form
{
Form _form1 = null;
public Form2(Form from1)
{
_form1 = from1;
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
_form1.Show();
this.Hide();
}
}
form1中:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.button1.BackColor = Color.Red;
Form2 f2 = new Form2(this);
f2.Show();
this.Hide();
}
}
谢谢你哈,测试OK。
form1别关了,隐藏显示代替关闭打开。
这种界面用mvvm的思路来做,将页面状态放到一个对象里.
例子:public class viewmodel{button5color="Red"}
然后写一个bind方法.每次重新渲染界面的时候就调用这个bind方法.在bing方法中.
将viewmodel的状态绑定的界面上(将button5color的值付给button)
“转换页面进入了form2窗体后,再返回form1窗体”
他的意思恐怕是:关了form1打开form2再关了form2又打开form1。
所以,,,,,,
可否把完整的代码写出来,我直接复制进去测试下。
@西漠以西: 一样的.每次打开窗体的时候重新渲染下就行了.这样代码量就都在渲染方法上了.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { button1.BackColor = Color.Red; } private void button2_Click(object sender, EventArgs e) { using (var frm = new Form2()) { frm.ShowDialog(); } } } }
没有遇到你说的情况啊
下次把teamviewer等远程截图贴上来。这么多码农哥哥,难道会没人手把手帮你
@数据酷软件: 谢谢你啊,你好久没来啦,想你了。
@绿绿山水:楼下已经给你说明原因了。你不应该在Form2里再把Form1重新实例化一下,就是不用重新new一个Form1。变量和对象的作用域,生命周期这个知识点去加强一下,搞明白。