C# 如何在form1中的值更改时更新form2

C# 如何在form1中的值更改时更新form2,c#,forms,visual-studio,C#,Forms,Visual Studio,在C#中,我有两种形式“Form1”和“Form2”。Form1创建存储在文件夹中的图像。Form2显示该文件夹中的图像数 假设我用Form1制作了两张图片,然后打开Form2。Form2现在显示有两张图片。现在,在保持两个表单打开的同时,我希望能够添加新的图像和Form2更新。如果在Form2打开时使用Form1添加更多图像,Form2将继续显示打开Form2时文件夹中的图像数 我已经找到了解决方案,包括关闭和重新打开Form2,但我不想这样。对于用户来说,每次按下按钮都会打开和关闭窗口,这是

在C#中,我有两种形式“Form1”和“Form2”。Form1创建存储在文件夹中的图像。Form2显示该文件夹中的图像数

假设我用Form1制作了两张图片,然后打开Form2。Form2现在显示有两张图片。现在,在保持两个表单打开的同时,我希望能够添加新的图像和Form2更新。如果在Form2打开时使用Form1添加更多图像,Form2将继续显示打开Form2时文件夹中的图像数

我已经找到了解决方案,包括关闭和重新打开Form2,但我不想这样。对于用户来说,每次按下按钮都会打开和关闭窗口,这是不和谐的。我只希望Form2在我使用Form1进行更改时实时更新


任何帮助都将不胜感激!!谢谢

您可以使用Form2中的public方法执行此操作

在Form1中,需要将Form2对象保存在属性中

表格1

    public partial class Form1 : Form
    {
        public Form2 MyProperty { get; set; }
        public Form1()
        {
            InitializeComponent();
        }

        // for opening form 2
        private void button1_Click(object sender, EventArgs e)
        {
            
            Form2 f2 = new Form2();
            f2.Show();
            MyProperty = f2;
        }


        // adding new image
        private void button_ADD_Click(object sender, EventArgs e)
        {
            MyProperty.updateCounter();
        }
    }
添加新图像时,可以从Form2调用metoh来更新计数器

表格2中您需要板条箱公共方法来更新计数器

 public partial class Form2 : Form
    {
    

        public Form2()
        {
            InitializeComponent();
            // default value
            label1.Text = "0";
        }

        // update counter
        public void updateCounter()
        {
            label1.Text = (int.Parse(label1.Text) + 1).ToString();
        }

    }

您可能需要查看事件代理。基本上,每当您对
Form1
执行可能影响其他表单的操作时,您都希望触发一个事件。在
Form2
中,您有一个方法,每当事件触发时,您都会调用该方法。这样,您可以打开多个表单,只要将它们设置为“侦听”给定的事件,它们都可以做出反应

您可以在此处的。

中阅读更多关于这些事件的信息,请参阅以下关于事件的内容。