C⼰プログラムフォーム間のコールバックイベントを使用した通信例


Form 2:

// string         
publicdelegate void MyDelegate(string text);        
public partial class Form2 :Form1    
    {        
       //     
        public event MyDelegate MyEvent;    
        public Form2(string text)    
        {     
            InitializeComponent();    
            this.textBox1.Text = text;    
       }    
       private void btnChange_Click(object sender, EventArgs e)                  
       {    

           // ,     
           MyEvent(this.textBox1.Text);    
           this.Close();    
        }    
   }

Form 1:

public partial class Form1 :Form    
    {    
        public int index = 0;    
        public string text = null;    
        public Form1()    
        {    
            InitializeComponent();    
        }    

        private void listBox1_SelectedIndexChanged(object sender, EventArgse)    
        {    
            if (this.listBox1.SelectedItem != null)    
            {    
                text = this.listBox1.SelectedItem.ToString();    
                index = this.listBox1.SelectedIndex;    
                Form2 form2 = new Form2(text);    

               // form2_MyEvent MyEvent     
                form2.MyEvent += new MyDelegate(form2_MyEvent);    
                form2.Show();    
            }    
        }    

       //     

        void form2_MyEvent(string text)    
        {    
            this.listBox1.Items.RemoveAt(index);    
            this.listBox1.Items.Insert(index, text);    
       }    
   }