this.BackgroundImage = Image.FromFile("C:\\Resim.jpg");
this.BackColor = Color.Blue;
Ben yaptığım projede bazılarınızın da aklına geldiği gibi kalıtım kullandım. Ama kalıtımda da yukarıdaki kodları doğrudan yazınca (sadece renk değiştirmede) işe yaramıyor. Bunun için uyguladığım yöntemi kodları kısaltıp size aktarmak istiyorum.
İlk olarak MdiBackGround isimli yeni bir Windows projesi oluşturalım. Ve Form1’in kodlarını aşağıdaki gibi yazalım. (Form1 miras alınacak sınıf olarak kullanılacak)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Drawing.Drawing2D; namespace MdiBackGround { public partial class Form1: Form { public Form1() { InitializeComponent(); } protected override void OnPaint(PaintEventArgs e) { //if (!DesignMode)//eğer tasarım anında hata olursa bunu aktifleştirin. PaintBackground(e.Graphics); } [DefaultValue(false)] public new bool IsMdiContainer { get { return base.IsMdiContainer; } set { base.IsMdiContainer = value; if (!value) return; for (int i = 0; i < this.Controls.Count; i++) { MdiClient mdiClient = this.Controls[i] as MdiClient; if (mdiClient != null) { mdiClient.Paint += new PaintEventHandler(this.MdiClient_Paint); break; } } } } private void MdiClient_Paint(object sender, PaintEventArgs e) { //if (!DesignMode)//eğer tasarım anında hata olursa bunu aktifleştirin. PaintBackground(e.Graphics); } private void PaintBackground(Graphics g) { //this.BackgroundImage = Image.FromFile("C:\\Resim.jpg"); //Burada doğrudan bu yazılınca çalışıyor. Rectangle rect = this.ClientRectangle; rect.Inflate(2, 2); SolidBrush sb = new SolidBrush(Color.Blue); g.FillRectangle(sb, rect); sb.Dispose(); } } }