• [C# 学习]窗体间调用控件


    一、方法1:

    假如有两个窗体,Form_A和Form_B,每个窗体里都有一个按键,Button_A和Button_B,要实现单击Button_A显示窗体B,那么窗体A中Buttom_A的单击事件的程序应该是:

    private void button_A_Click(object sender, EventArgs e)
    {
        Form_B  f = new Form_B();
        f.Show();
    }

     

    如果希望单击窗体B中的按键Button_B,实现改变窗体A的背景色,那么你需要做:

    1. Form_B 窗体的Class里添加如下代码:

    public Form_A fb;
    public Form_B(Form_A  f)
    {
        InitializeComponent();
        fb = f;
    }
    
    private void button_B_Click(object sender, EventArgs e)
    {
        fb.BackColor = Color.Brown;
    }

    2. Form_A窗体中的Button_A单击事件变成:

    private void button_A_Click(object sender, EventArgs e)
    {
        Form_B f = new Form_B(this);
        f.Show();
    }

    完整程序如下

    Form_A:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace formExam
    {
        public partial class Form_A : Form
        {
            public Form_A()
            {
                InitializeComponent();
            }
    
            private void Button_A_Click(object sender, EventArgs e)
            {
                Form_B f = new Form_B(this);
                f.Show();
            }
    
            private void Form_A_Load(object sender, EventArgs e)
            {
    
            }
        }
    }

    Form_B:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace formExam
    {
        public partial class Form_B : Form
        {
            public Form_A fb;
            public Form_B(Form_A f)
            {
                InitializeComponent();
                fb = f;
            }
    
            private void Button_B_Click(object sender, EventArgs e)
            {
                fb.BackColor = Color.Brown;
            }
        }
    }

    二、方法2:通过委托实现

    1. 在Form_B的Class外定义一个委托类型

     public delegate void ChangeFormColor();

    2. 在Form_B的Class内定义委托的方法

    public event ChangeFormColor ChangeColor;

    3. Button_B单击事件为

    private void Button_B_Click(object sender, EventArgs e)
    {
        ChangeColor();
    }

    4. Form_A中的单击事件为

    private void Button_A_Click(object sender, EventArgs e)
    {
        Form_B f = new Form_B();
        f.ChangeColor += new ChangeFormColor(f_ChangeColor);
        f.Show();
    }

    5. 编写改变Form_A 背景色的方法

    void f_ChangeColor()
    {
        this.BackColor = Color.Brown;
    }

    完整程序如下:

    Form_A:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace formExam
    {
        public partial class Form_A : Form
        {
            public Form_A()
            {
                InitializeComponent();
            }
    
            private void Button_A_Click(object sender, EventArgs e)
            {
                Form_B f = new Form_B();
                f.ChangeColor += new ChangeFormColor(f_ChangeColor);
                f.Show();
            }
    
            void f_ChangeColor()
            {
                this.BackColor = Color.Brown;
            }
        }
    }

    Form_B:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace formExam
    {
        public delegate void ChangeFormColor();
        
        public partial class Form_B : Form
        {
            public event ChangeFormColor ChangeColor;
            public Form_B()
            {
                InitializeComponent();
            }
    
            private void Button_B_Click(object sender, EventArgs e)
            {
                ChangeColor();
            }
        }
    } 
  • 相关阅读:
    Javascript中最常用的55个经典技巧(转)
    Yahoo!网站性能最佳体验的34条黄金守则(转载)
    你误解了Windows的文件后缀名吗?
    你不知道的Spring配置文件
    Thrift 个人实战--Thrift 的序列化机制
    Thrift 个人实战--Thrift 网络服务模型
    Thrift 个人实战--初次体验Thrift
    HBase 实战(2)--时间序列检索和面检索的应用场景实战
    Kafka实战系列--Kafka API使用体验
    Kafka实战系列--Kafka的安装/配置
  • 原文地址:https://www.cnblogs.com/mr-bike/p/3721523.html
Copyright © 2020-2023  润新知