如何从另一个表单更改所有表单的背景
How to change the background on all forms from another form
//when button is clicked
this.BackgroundImage = new Bitmap(@"file_location");
无论如何我可以制作一个 Base class 并更改
的文件位置
this.BackgroundImage = new Bitmap(@"file_location");
在我之后打开的表格上,根据选择的图像,所有表格将共享相同的背景图像
可能的解决方案:以某个值保存图像的颜色或路径。
当打开一些新表单时,将此值作为参数传递到它的构造函数中。在初始化设置 BackgroundImage
.
之后
第一种形式:
var backGround = String.Empty;
private void SelectBackGround(){
//some stuff
backGround = imgPath;
}
protected void btn_click(...){
var form = new Form2(backGround);
form.Show();
}
在 Form2 中:
public Form2(string img){
//init controls
this.BackgroundImage = new Bitmap(img);
}
像这样...
如果您想在单击按钮后更改应用中所有表单的背景图像,请尝试以下操作:
public class BaseForm: Form
{
private static Bitmap _skin = new Bitmap(@"default");
// base Form stores static image which should be set as background for derived forms
public static Bitmap Skin
{
get { return _skin; }
set { _skin = value; OnSkinChanged(EventArgs.Empty); }
}
// when current image changes, event is raised
static event EventHandler SkinChanged;
static void OnSkinChanged(EventArgs e)
{
if (SkinChanged!=null)
SkinChanged(null, e);
}
public BaseForm()
{
InitializeComponent();
// all derived forms are subscribed to event of changing background image
// they update own background image
BaseForm.SkinChanged += SetSkinHandler;
// set background when form created
if (!DesignMode) // do not change in design mode (optional check)
SetSkin();
}
private void SetSkinHandler(object sender, EventArgs e)
{
SetSkin();
}
private void SetSkin()
{
this.BackgroundImage = BaseForm.Skin;
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
BaseForm.SkinChanged -= SetSkinHandler;
}
// default
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
}
在按钮点击处理程序中设置图像(从设置菜单中获取)
private void SkinButtonClick(object sender, EventArgs e)
{
BaseForm.Skin = new Bitmap(@"file_location");
}
//when button is clicked
this.BackgroundImage = new Bitmap(@"file_location");
无论如何我可以制作一个 Base class 并更改
的文件位置 this.BackgroundImage = new Bitmap(@"file_location");
在我之后打开的表格上,根据选择的图像,所有表格将共享相同的背景图像
可能的解决方案:以某个值保存图像的颜色或路径。
当打开一些新表单时,将此值作为参数传递到它的构造函数中。在初始化设置 BackgroundImage
.
第一种形式:
var backGround = String.Empty;
private void SelectBackGround(){
//some stuff
backGround = imgPath;
}
protected void btn_click(...){
var form = new Form2(backGround);
form.Show();
}
在 Form2 中:
public Form2(string img){
//init controls
this.BackgroundImage = new Bitmap(img);
}
像这样...
如果您想在单击按钮后更改应用中所有表单的背景图像,请尝试以下操作:
public class BaseForm: Form
{
private static Bitmap _skin = new Bitmap(@"default");
// base Form stores static image which should be set as background for derived forms
public static Bitmap Skin
{
get { return _skin; }
set { _skin = value; OnSkinChanged(EventArgs.Empty); }
}
// when current image changes, event is raised
static event EventHandler SkinChanged;
static void OnSkinChanged(EventArgs e)
{
if (SkinChanged!=null)
SkinChanged(null, e);
}
public BaseForm()
{
InitializeComponent();
// all derived forms are subscribed to event of changing background image
// they update own background image
BaseForm.SkinChanged += SetSkinHandler;
// set background when form created
if (!DesignMode) // do not change in design mode (optional check)
SetSkin();
}
private void SetSkinHandler(object sender, EventArgs e)
{
SetSkin();
}
private void SetSkin()
{
this.BackgroundImage = BaseForm.Skin;
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
BaseForm.SkinChanged -= SetSkinHandler;
}
// default
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
}
在按钮点击处理程序中设置图像(从设置菜单中获取)
private void SkinButtonClick(object sender, EventArgs e)
{
BaseForm.Skin = new Bitmap(@"file_location");
}