C#委任インスタンス(フォーム間操作コントロール)

2222 ワード

今日検討したところ、C#ではカスタムメッセージのような複雑な方法でフォーム間呼び出しコントロールを実現することはできませんが、C#は依頼するより良い方法があります.
効果説明:FORM 1(form 2を開くbuttonコントロール)とFORM 2(form 1の色を変えるbuttonコントロール)の2つのフォームがあります.起動時、FORM 1でbuttonコントロール「form 2を開く」をクリックしてFORM 2を表示します.FORM 2の「form 1色を変える」をクリックすると、Form 1の色が変わります.
一、Form 2の中で:まず一つの委託と委託の実例Form 2類外を宣言する
public delegate void ChangeFormColor(bool topmost);

Form 2クラス
public event ChangeFormColor ChangeColor;

Form 2のボタンイベントで呼び出し依頼
private void button1_Click(object sender, EventArgs e)
        {
            ChangeColor(true);// 
        }

二、Form 1:buttonコントロール「form 2を開く」のclickイベントには次のコードがあります.
        {
            Form2 f = new Form2();
            f.ChangeColor += new ChangeFormColor(f_ChangeColor);
            f.Show();
        }

f.ChangeColor += new ChangeFormColor(f_ChangeColor); この最も肝心なのは、あなたが+=に入力した後、Tabを2回押すと、彼は自動的にあなたにコールバック関数を生成します.以下のようにします.
void f_ChangeColor(bool topmost)
        {
            this.BackColor = Color.LightBlue;
            this.Text = " ";
        }

三、完全なコード
using System;
using System.Drawing;
using System.Windows.Forms;

namespace  
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.ChangeColor += new ChangeFormColor(f_ChangeColor);
            f.Show();
        }
        void f_ChangeColor(bool topmost)
        {
            this.BackColor = Color.LightBlue;
            this.Text = " ";
        }
    }
}

 
using System;
using System.Windows.Forms;

namespace  
{
    public delegate void ChangeFormColor(bool topmost);
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        public event ChangeFormColor ChangeColor;
        private void button1_Click(object sender, EventArgs e)
        {
            ChangeColor(true);// 
        }
    }
}

 
最後に、最も簡単なC#クロスフォーム操作を紹介します.