C#窗体切换

[复制链接]
查看11 | 回复3 | 2008-5-2 21:46:12 | 显示全部楼层 |阅读模式
简单一点的办法,就是在创建Form2时传递Form1的引用。假设在Form2中添加一下的字段和属性private Form1 _targetForm;public Form1 TargetForm{
get{ return _targetForm; }
set{ _targetForm = value;}}接着,在Form2的代码中就可以对该引用进行操作了:if(_targetForm != null){
_targetForm.Background = XXXX;}对于Form1,在Form1的button1的Click事件响应中添加如下代码:Form2 form2 = new Form2();form2.TargetForm = this;// 在此用一个变量在存储当前Form1的背景// 然后:if(form2.ShowDialog() == DialogResult.Cancel){
// 在此用存储的背景替换当前被Form2设置的背景}
回复

使用道具 举报

千问 | 2008-5-2 21:46:12 | 显示全部楼层
静态类
回复

使用道具 举报

千问 | 2008-5-2 21:46:12 | 显示全部楼层
用static最简单
回复

使用道具 举报

千问 | 2008-5-2 21:46:12 | 显示全部楼层
在Form1窗体中添加一个button按钮,在该按钮的单击事件(button1_Click)中写如下代码:Form2 form2 = new Form2();//实例化FORM2窗体form2.Owner = this;//指定FORM1是FORM2窗体的拥有者form2.ShowDialog();//用ShowDialog方法,这样会有值传回到FORM1if (form2.DialogResult==DialogResult.OK)//如果你点击了FORM2的确定按钮,则把FORM2我们自己定义的IMAGE类型的属性赋给FORM1的BackgroundImage {this.BackgroundImage = form2.ImageNum; }添加一个Form2窗体,在Form2窗体上添加三个radiobutton按钮和两个button按钮,这三个radiobutton按钮用来选择传给FORM1的背景图片,BUTTON按钮一个是确定,一个是取消;FORM2窗体代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WindowsApplication1{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
this.button1.DialogResult = DialogResult.OK;//指定其中一个按钮的值为OK
this.button2.DialogResult = DialogResult.Cancel;;//指定其中一个按钮的值为CANCEL
}
private Image _image;//定义一个IMAGE类型的属性
public Image ImageNum
{
get { return _image; }
set { _image = value; }
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{//下面是判断选择了哪个图片做为背景
if (radioButton1.Checked)
{
this.ImageNum = this.imageList1.Images[0];
}
else if (radioButton2.Checked)
{
this.ImageNum = this.imageList1.Images[1];
}
else if (radioButton3.Checked)
{
this.ImageNum = this.imageList1.Images[2];
}
}
}}这样就可以实现你说的功能了,另外说一下如果调用SHOW()方法,则SHOW()方法后面的代码会立即执行。如果调用SHOWDIALOG()方法,则调用代码会暂停执行,等到SHOWDIALOG方法的窗体关闭后再继续执行,同时窗体会返回一个dialogresult的值,这样就可以实现您“如果不确认Form2里的选项的话,则在退出Form2之后,Form1仍然为原来的背景。”的要求参考资料:如果需要源码,可以给我发邮件,我把代码发给你 [email protected]

已赞过已踩过<上面说的都是new出一个对象 那样不好楼上说传递一个引用思路是对的具体我觉得在form1里做一个静态对象 这样方便还容易操纵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行