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();
}