【问题标题】:Form not showing the variable from previous form表格未显示先前表格中的变量
【发布时间】:2016-02-08 15:50:05
【问题描述】:

我得到了五个表格,分别显示:Form1 > Form2 > Form3 > Form4 > FinalForm。

每个人都有一个文本框和一个下一步按钮。我的问题是我无法从 Form1 的文本框中获取变量以在 label6 的 FinalForm(最后一个)中显示它。 有什么问题?

表格1:

namespace DaneUzytkownika2
{
public partial class Form1 : Form
{
    Nazwisko nazwisko = new Nazwisko();
    private string imie;

   public string UstawImie
    {
        get
        {
            return imie;
        }
        set
        {
            imie = value;
        }
    }

    public Form1()
    {
        StartPosition = FormStartPosition.CenterScreen;
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        UstawImie = textBox1.Text;
        Hide();
        nazwisko.ShowDialog();
    }
}
}

最后一种形式:

namespace DaneUzytkownika2
{
    public partial class KoncowaInformacja : Form
    {
        public KoncowaInformacja()
        {
            StartPosition = FormStartPosition.CenterScreen;
            InitializeComponent();
        }

        private void KoncowaInformacja_Load(object sender, EventArgs e)
        {
            Form1 form1 = new Form1();
            label6.Text = form1.UstawImie;
        }
    }
}

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    您正在创建Form1 的全新实例。为什么你会期望这将包含来自一个完全不同的Form1 实例的数据?如果您想将数据从一种形式传递到另一种形式,只需传递它们。例如,作为构造函数的参数,或创建自己的 ShowDialog 方法。

    private void button1_Click(object sender, EventArgs e)
    {
        var form = new Nawisko(textBox1.Text);
    
        ...
    }
    

    【讨论】:

    • 谢谢,但它会将 textBox1.text 传递给第二种形式 (Nazwisko),而不是最后一种 (KoncowaInformacja)。我如何将它传递给最后一个?我试过var form = new KoncowaInformacja(textBox1.Text);,但由于空值而出现错误。
    • @KrzysztofSzczepankiewicz 您没有展示足够多的代码来说明任何具体内容,但主要思想是您只需将它传递到您需要它去的任何地方。如果这意味着您需要通过三种不同的形式将其传递三次,那就是您必须做的。尝试阅读一下类型和实例之间的区别,以更清楚地了解正在发生的事情 - 我假设您来自 Delphi/Visual Basic 背景?
    • 嗯,我不需要每一步。我只需要它传递到最后一个。 First > last、second > last、third > last、fourth > last 和 last 显示所有文本框的值。这就是为什么我被卡住了,我知道如何将一个值传递给下一个,但我未能尝试让它为最后一个工作。好的,我将观看有关实例和类型的课程。
    • @KrzysztofSzczepankiewicz 当然,所以通过所有不同的形式传递它。有很多方法可以做到这一点,没有人说你必须单独传递每条数据——也许你可以传递几个structs,或者一个可变对象。或者只是将最终表单作为主表单,并让它按顺序启动所有不同的对话框 - 这将使您可以轻松访问每个表单的数据。无论如何,使用this.Hide(); next.ShowDialog(); 的序列可能是个坏主意。有许多具体的解决方案,但它们都归结为同一件事 - 传递数据。
    • 嗯,重点是,它必须包含 5 个表单,并且前 4 个表单中的每个表单都必须向最后一个表单发送一个文本框数据。它必须显示为 1>2>3>4>last。我会对此有所不同,但它必须看起来像一个安装向导(一个接一个)。还有另一种解决方案让它看起来像这样,而不像你提到的那样使用this.Hide(); next.ShowDialog();
    猜你喜欢
    • 2013-03-21
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 2013-12-30
    相关资源
    最近更新 更多