C# 在两个窗体之间传递数据

C# 在两个窗体之间传递数据,c#,forms,properties,C#,Forms,Properties,首先,我想让你们知道,我知道这个问题有很多结果,但我已经搜索了很多地方,仍然没有找到解决我问题的方法 我已尝试做以下工作: 1.constructor 2.objects 3.properties 4.delegates 但我对它们的实现都没有达到预期效果(在这个“解决方案”中,我使用了属性) 当我在“弹出”屏幕上按“后退”时,我不会在主屏幕上显示我在“弹出”屏幕中选择的值 基本上,它就像,我有主屏幕和一个“弹出窗口” “弹出窗口” 您能描述一下您的问题吗?您希望发生什么以及发生了什么?

首先,我想让你们知道,我知道这个问题有很多结果,但我已经搜索了很多地方,仍然没有找到解决我问题的方法

我已尝试做以下工作:

1.constructor

2.objects

3.properties

4.delegates
但我对它们的实现都没有达到预期效果(在这个“解决方案”中,我使用了属性)

当我在“弹出”屏幕上按“后退”时,我不会在主屏幕上显示我在“弹出”屏幕中选择的值

基本上,它就像,我有主屏幕和一个“弹出窗口”

“弹出窗口”


您能描述一下您的问题吗?您希望发生什么以及发生了什么?在关闭弹出窗口之前,添加了您正在设置的主窗体的属性
selectedDefault
的问题。您是否没有在主窗体中更新属性值?是否抛出错误?您是否在属性中获得意外值?您还应该ot use variable?您选择了公共属性
您应该使用它从外部获取或设置值。拾取的值应该显示在哪里?显示为
mixtureBtn的文本(我猜这是一个按钮)?@ChetanRanpariya值
selectedDefault
在弹出屏幕上获得正确的值,但它不会通过主屏幕中的
Selected prop
传递到主屏幕,也应该在按下
the main screen

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BakaritCV
{
    public partial class FrmProdChoose : MetroFramework.Forms.MetroForm
    {
        CVFeedUtilities utilities = new CVFeedUtilities();
        Mixtures mixture;
        public string selectedDefault = " 102";

        string t;
        public FrmProdChoose(string t)
        {
            InitializeComponent();
            this.t = t;

        }
        public FrmProdChoose()
        {
            InitializeComponent();

        }

        private void btnHome_Click(object sender, EventArgs e)
        {
            FrmMain frmload = new FrmMain();
            utilities.moveBetweenScreens(this, frmload);
        }

        private void mixtureBtn_Click(object sender, EventArgs e)
        {

            utilities.loadPopUp(this, mixture);
        }

        private void FrmProdChoose_Load(object sender, EventArgs e)
        {
            mixture = new Mixtures(this);
            mixtureBtn.Text = selectedDefault;

        }
        public string Selected
        { 
            get { return selectedDefault; }
            set { selectedDefault = value;  }

        }




    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BakaritCV
{
    public partial class Mixtures : MetroFramework.Forms.MetroForm     
    {
        string[] mixture = new string[] { "102", "103", "104", "105" };
        MetroFramework.Controls.MetroTile[] tiles;
        FrmProdChoose form;     
        string  selectedDefault; 
        CVFeedUtilities utilities = new CVFeedUtilities();
        public Mixtures(FrmProdChoose form)
        {
            InitializeComponent();
            this.form = form;
        }

        private void btnHome_Click(object sender, EventArgs e)
        {
            form.Selected = selectedDefault;
            utilities.closePopUp(this, form);
        }

        private void Mixtures_Load(object sender, EventArgs e)
        {
            tiles = new MetroFramework.Controls.MetroTile[] { tileOne, tileTwo, tileThree, tileFour};
            for (int i = 0; i < mixture.Length; i++)
                tiles[i].Text = mixture[i];
        }

        private void tileOne_Click(object sender, EventArgs e)
        {
            tileOne.BackColor = Color.ForestGreen;
            removeBackColor(1); 
        }

        private void tileTwo_Click(object sender, EventArgs e)
        {
            tileTwo.BackColor = Color.ForestGreen;
            removeBackColor(2); 
        }

        private void tileThree_Click(object sender, EventArgs e)
        {
            tileThree.BackColor = Color.ForestGreen;
            removeBackColor(3); 
        }

        private void tileFour_Click(object sender, EventArgs e)
        {
            tileFour.BackColor = Color.ForestGreen;
            removeBackColor(4); 
        }

        private void tileFive_Click(object sender, EventArgs e)
        {
            tileFive.BackColor = Color.ForestGreen;
            removeBackColor(5); 
        }


        public void removeBackColor(int index)
        {
            for (int i = 0; i < tiles.Length; i++)
            {
                if (i == index - 1)
                {
                    selectedDefault = tiles[i].Text;                    
                    continue;
                }

                else tiles[i].BackColor = Color.DeepSkyBlue;

            }
        }


    }
}
   public void loadPopUp(Form from, Form to)
        {
            to.Tag = from;
            to.Show(from);
        }
        public void closePopUp(Form from, Form to)
        {
            to.Tag = from;
            if (!to.Visible)
                to.Show(from);
            from.Hide();
        }