WinForms raise event from another Form

后端 未结 2 815
北荒
北荒 2021-01-03 16:24

I have a main form named: MainForm and a child form named: ChildForm I want to fill ChildForm\'s textboxes and in MainForm_ButtonClick i want to fire ChildForm_ButtonClick e

相关标签:
2条回答
  • 2021-01-03 17:02

    Child form

    public partial class ChildForm : Form
    {
        public ChildForm()
        {
            InitializeComponent();
            MainForm.OnChildTextChanged += MainForm_OnChildTextChanged;
            MainForm.OnButtonClick += MainForm_OnButtonClick;
            bttn1.Visible = false;
        }
    
        void MainForm_OnButtonClick(object sender, EventArgs e)
        {
            this.bttn1.PerformClick();
        }
    
        void MainForm_OnChildTextChanged(string value)
        {
            this.textBox1.Text = value;
        }
    
        private void bttn1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("I am hide. But shows message");
        }
    
    }
    
    public class Bttn : Button
    {
        public new void PerformClick()
        {
            this.OnClick(EventArgs.Empty);
        }
    }
    

    Create a Parent Form

    public partial class MainForm : Form
    {
        public delegate void OnMyTextChanged(string value);
        public delegate void ButtonClicked(object sender, EventArgs e);
    
        public static event OnMyTextChanged OnChildTextChanged;
        public static event ButtonClicked OnButtonClick;
    
        ChildForm frm = new ChildForm();
    
        public MainForm()
        {
            InitializeComponent();
            frm.Show();
        }
    
        public void button1_Click(object sender, EventArgs e)
        {
            OnChildTextChanged("this is new value");
            OnButtonClick(sender, e);
        }
    }
    
    0 讨论(0)
  • 2021-01-03 17:19

    To access a textbox in another form:

    1. Set Modifier property of the the textbox to public in child form.

    2. In main form, access the textbox by an object of the child form.

      Eg:

      obj.txtBox.Text="MyValue";
      

    To access an event in another form:

    1. Set the event handling function to public.

    2. Invoke the function by passing null as parameters by the object of the form.

      Eg:

      obj.MyButton_Click(null, null);
      
    0 讨论(0)
提交回复
热议问题