Witajcie.
Postanowiłem przerobić świetny program www.codeproject.com/Using-a-delegate dodając swoją funkcjonalność jednocześnie ucząc się delegatów w C#. tak kombinowałem ale bez skutku. chciałem w trywialny sposób przesłać obrazek z okna 1 do 2. i ponownie z 2 do 1. Jednak nie chciałem go wczytywać do okna 2 z pliku.
Wklejam wypociny:
Form1:
namespace Delegates
{
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TextBox txtForm1;
private System.Windows.Forms.Button btnForm1;
private System.Windows.Forms.Label label1;
private PictureBox pictureBox1;
private System.ComponentModel.Container components = null;
public Form1()
{
InitializeComponent();
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
private void InitializeComponent()
{ }
static void Main()
{
Application.Run(new Form1());
}
private void btnForm1_Click(object sender, System.EventArgs e)
{
Image image = Image.FromFile(@"C:\Users\***\Pictures\01.jpg");
this.pictureBox1.Image = image;
Form2 form2 = new Form2();
form2.passControl = new Form2.PassControl(PassData);
form2.pass2Cotrol = new Form2.Pass2Control(Pass2Data);
form2.Show();
}
private void PassData(object sender)
{
txtForm1.Text = ((TextBox)sender).Text;
}
private void Pass2Data(object sender)
{
pictureBox1.Image = ((PictureBox)sender).Image;//tu bład //Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.
}
}
Cudowałem z tym dałem System.EventArgs e
np. i nic i druga foremka:
Form2:
namespace Delegates
{
public class Form2 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button btnForm2;
private System.Windows.Forms.TextBox txtForm2;
private System.Windows.Forms.PictureBox picture;
private System.ComponentModel.Container components = null;
private PictureBox pictureBox1;
public delegate void PassControl(object sender);
public delegate void Pass2Control(object sender);
public PassControl passControl;
public Pass2Control pass2Cotrol;
public Form2()
{
InitializeComponent();
}
public TextBox getText()
{
return txtForm2;
}
public PictureBox Picture2Box()
{
return picture;
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
private void InitializeComponent()
{
//…
//Wyciety blok kodu opisujący kontrolki
//…
}
private void btnForm2_Click(object sender, System.EventArgs e)
{
if (passControl != null)
{
passControl(txtForm2);
pass2Cotrol(picture);
}
this.Hide();
}
}