同一个WinFOrm变成两个界面后如何同步变化界面
同一个WinFOrm变成两个界面后怎么同步变化界面
是这样的,我有一个窗体,上面有一个按钮是全屏显示,其实就是把这个窗体重新再生成一个全屏的窗体
------解决方案--------------------
如果你的程序特别小的话, 就把两个窗口都需要的数据存到static 对象里面 ,虽然不是什么好习惯。
比如叫public static DataContainer Datas{get;set;}
让你的两个窗口都有共同的方法 reloadData()
然后reloadData做的是 通过Datas里面存的东西,来改变页面的显示内容。
我只能解释到这里了,我不可能抽出时间写代码给你,今天会****只是溜达溜达。。。
------解决方案--------------------
这个全屏是本身全屏比较好,把要全屏的部分里面的控件都设置成自适应大小的,也就是把Anchor和Dock属性都设置好
原理是把要全屏的部分重新放置在一个新的窗体里,这个窗体最大化,全屏还原的时候再把它塞回原来的窗体里。
代码仅供参考
是这样的,我有一个窗体,上面有一个按钮是全屏显示,其实就是把这个窗体重新再生成一个全屏的窗体
private void button1_Click(object sender, EventArgs e)为什么要保证两个窗体同步,是因为在窗体操作更新了一些选项后,如果退出全屏后小窗体的选项想要保持在全屏后选择的那些状态。不知道要怎么操作?
{
if (this.button1.Text == "Full Screen")
{
Report f = new Report();
f.StartPosition = FormStartPosition.CenterScreen;
f.FormBorderStyle = FormBorderStyle.None;
f.WindowState = FormWindowState.Maximized;
f.button1.Text = "Exit Screen";
f.TopMost = true;
this.WeekList.Width = Screen.PrimaryScreen.WorkingArea.Width;
f.ShowDialog();
}
else
{
this.Dispose();
this.Close();
}
}
------解决方案--------------------
如果你的程序特别小的话, 就把两个窗口都需要的数据存到static 对象里面 ,虽然不是什么好习惯。
比如叫public static DataContainer Datas{get;set;}
让你的两个窗口都有共同的方法 reloadData()
然后reloadData做的是 通过Datas里面存的东西,来改变页面的显示内容。
我只能解释到这里了,我不可能抽出时间写代码给你,今天会****只是溜达溜达。。。
------解决方案--------------------
这个全屏是本身全屏比较好,把要全屏的部分里面的控件都设置成自适应大小的,也就是把Anchor和Dock属性都设置好
原理是把要全屏的部分重新放置在一个新的窗体里,这个窗体最大化,全屏还原的时候再把它塞回原来的窗体里。
代码仅供参考
protected Form con = null;//保存父级容器
/// <summary>
/// 最大化
/// </summary>
protected void BaseFullScreen(out Form parentForm)
{
parentForm = this.ParentForm;//这里的this是要全屏的Form,这段代码是在这个Form里面写的,不是在主窗体里写的
MainForm main = parentForm as MainForm;//MainForm是主窗体
main.pnlMain.Controls.Remove(this);///这里在主窗体中把要全屏的部分,也就是this抠除
main.Visible = false;
this.TopLevel = true;
//this.TopMost = true;
//获取屏幕分辨率
int SH = Screen.PrimaryScreen.Bounds.Height;
int SW = Screen.PrimaryScreen.Bounds.Width;
this.Size = new Size(SW, SH);
//SetToolTipName();
this.Activate();
this.isFullScreen = true;
}
//要说明的是,上述代码要全屏的部分已经是一个Form了,所以就把大小和位置改了一下,如果不是Form而是UserControl或者是Panel之类的,就再新建一个全屏的Form把它放进去。
/// <summary>
/// 最大化还原
/// </summary>
protected void BaseReduction(Form parentForm)
{
if (parentForm != null)
{
//this.TopMost = false;